Patent Description:
As is known to those skilled in the art, motor drives are utilized to control operation of a motor. According to one common configuration, a motor drive includes a DC bus having a DC voltage of suitable magnitude from which an AC voltage may be generated and provided to the motor. The DC voltage may be provided as an input to the motor drive or, alternately, the motor drive may include a rectifier section which converts an AC voltage input to the DC voltage present on the DC bus. The rectifier section may be a passive rectifier with diodes converting the AC voltage to a DC voltage, or the rectifier section may be an active front end with power electronic switching devices, such as metal-oxide semiconductor field-effect transistors (MOSFETs), insulated gate bipolar transistors (IGBTs), thyristors, or silicon-controlled rectifiers (SCRs). The power electronic switching device further includes a reverse conduction power electronic device, such as a free-wheeling diode, connected in parallel across the power electronic switching device. The reverse conduction power electronic device is configured to conduct during time intervals in which the power electronic switching device is not conducting. A controller in the motor drive generates switching signals to selectively turn on or off each switching device to convert the AC voltage to a desired DC voltage on the DC bus. An inverter section is supplied between the DC bus and an output of the motor drive to convert the DC voltage on the DC bus back to an AC voltage having a variable amplitude and frequency to control rotation of the motor. The inverter section includes power electronic switching devices and receives switching signals to selectively turn on and off each switching device to obtain the desired AC voltage.

The motor drive receives a command signal which indicates the desired operation of the motor. The command signal may be a desired position, speed, or torque at which the motor is to operate. The position, speed, and torque of the motor are controlled by varying the amplitude and frequency of the AC voltage applied to the stator. The motor is connected to the output terminals of the motor drive, and the controller generates the switching signals to rapidly switch the switching devices on and off at a predetermined switching frequency and, thereby, alternately connects or disconnects the DC bus to the output terminals and, in turn, to the motor. By varying the duration during each switching period for which the output terminal of the motor drive is connected to the DC voltage, the magnitude and/or frequency of the output voltage is varied. The motor controller utilizes modulation techniques such as pulse width modulation (PWM) to control the switching and to synthesize waveforms having the desired amplitudes and frequencies to follow the command signal and obtain desired operation.

However, limits on operation sometimes prevent a motor drive from following the command signal. A difference in the actual trajectory achieved by the motor drive and a trajectory defined by the commanded signal is referred to as tracking error. In many instances, this inability to follow the commanded trajectory is temporary. A motor drive may, for example, receive a position command requiring acceleration beyond the capacity of the motor drive. While attempting to follow the commanded trajectory, the motor drive may output a maximum current it is able to produce and, as a result, obtain a maximum rate of acceleration. This maximum rate of acceleration, however, may not result in the motor following the position command and some tracking error results. After the motor has accelerated to a speed corresponding to the rate of change in the position command and if a maximum speed of operation for the motor drive is not exceeded, the motor drive may continue acceleration and operate for a short duration at a speed greater than the intended speed of operation to resolve the tracking error. Once the motor has eliminated the tracking error, the motor drive returns to the commanded trajectory and continues operating according to the commanded signal.

If a motor drive encounters some level of tracking error for too great a period of time or if the magnitude of the tracking error becomes too great at any given instance in time, the controlled machine or process may no longer achieve desired operation and a fault condition may occur. When tracking error is too great, parts being manufactured, containers being filled, or labels being applied, for example, may generate a part that is out of tolerance, may incorrectly fill a container, of may misapply a label to the product.

Thus, it would be desirable to minimize tracking error in a controlled machine or process.

When generating command trajectories, known operating conditions and operating capabilities of the controlled machine or process are considered in order to generate feasible command trajectories. However, outside influences acting on the controlled machine or process may cause some tracking error. Some such outside influences may be vibration in a gearbox or drive belt, a resonant operating condition, or a physical impact between components in the controlled machine or process.

The ability of the motor drive to follow a trajectory is dependent not only on the configuration of the motor drive but also on the configuration of the load to be driven by the motor. In certain applications, a load may be coupled by a rigid connection and have a fixed inertia. Such a load may result in a predictable response and may be factored into the motion profile generated by the industrial controller. In other applications, the load may be coupled via a flexible coupling, which may introduce resonance and/or backlash into the controlled system. In still other applications, the load may vary during operation and may even vary in an unknown manner. Such variations in the dynamics of the controlled system may result in motion profiles that cannot always be followed by the motor drive. The motor drive will respond according to its maximum response limits, but there could be overshoot, oscillation, or other undesirable performance of the motor.

Thus, it would be desirable to provide a system and method to monitor operation of the motor during operation and adaptively track disturbances experienced by the motor.

It would also be desirable to provide a system and method to decouple the disturbances identified as a result of the adaptive tracking. <CIT> discloses a position control device that controls the position of a load unit driven by a servomotor via a driving force transmission system. <CIT> discloses a real-time servo motor controller based on a load weight capable of not only adaptively controlling the servo motor even when load inertia varies in accordance with a weight of a load but also controlling the servo motor in an optimum state regardless of the load weight by reflecting in real time various mechanical variables generated while transferring the load. <CIT> discloses a method for isolation of load dynamics in motor drive tuning. It is the object of the present invention to provide an improved method and system for minimizing tracking error in a controlled machine or process.

According to one embodiment of the invention, a method for dynamic observation of a cyclic disturbance in a controlled machine or process includes receiving a command signal and a cycle position signal at a motor drive. The command signal corresponds to a desired operation of a motor operatively controlled by the motor drive, and the cycle position signal corresponds to a location within one cycle of operation of the controlled machine or process, where the cycle of operation does not correspond to one rotation of the motor. A value of an estimated acceleration resulting from a disturbance force experienced by the motor during the cycle of operation is determined and stored in memory of the motor drive at a plurality of sample instances within the cycle of operation.

According to another embodiment of the invention, a motor drive is configured to dynamically observe a cyclic disturbance in a controlled machine or process. The motor drive includes at least one input configured to receive a command signal and a cycle position signal, a memory configured to store a look up table, and a processor. The command signal corresponds to a desired operation of a motor operatively connected to the motor drive and the cycle position signal corresponds to a location within one cycle of operation of the controlled machine or process. The processor is configured to determine a value of an estimated acceleration resulting from a disturbance force experienced by the motor during the cycle of operation and store the value of the estimated acceleration in the look up table at a plurality of sample instances within the cycle of operation.

According to yet another embodiment, a method for dynamic compensation of a cyclic disturbance in a controlled machine or process includes receiving a command signal and a cycle position signal at a motor drive. The command signal corresponds to a desired operation of a motor operatively controlled by the motor drive and the cycle position signal corresponds to a location within one cycle of operation of the controlled machine or process, where the cycle of operation does not correspond to one rotation of the motor. A disturbance value is read from a look up table stored in a memory of the motor drive, where the disturbance value corresponds to the cycle position signal. A control module is executed within the motor drive responsive to receiving the command signal to obtain the desired operation of the motor, and the disturbance value is provided to the control module to reduce a tracking error in the control module.

These and other advantages and features of the invention will become apparent to those skilled in the art from the detailed description and the accompanying drawings. It should be understood, however, that the detailed description and accompanying drawings, while indicating preferred embodiments of the present invention, are given by way of illustration and not of limitation.

The subject matter disclosed herein describes a system and method to monitor operation of the motor during operation and adaptively track disturbances experienced by the motor. The motor drive receives a command signal and a cycle position signal. During an initial run through one cycle of operation, the motor drive monitors operation of the motor and generates an estimated disturbance throughout the cycle of operation. Values of the estimated disturbance are stored in a look up table at periodic intervals within the cycle of operation. During subsequent runs through the cycle of operation, the motor drive uses stored values of disturbance from a prior run as a feedforward value into a control module. The motor drive again monitors operation of the motor and generates a new estimated disturbance value throughout each subsequent cycle of operation. The values of the estimated disturbance are updated within the look up table as a function of the new estimated disturbance values and of the previously stored values. The values of estimated disturbance throughout one cycle of operation are continually calculated throughout subsequent cycles to reduce the effects of periodic disturbance observed by the motor drive within a cycle of operation by the controlled machine or process. The stored disturbance values adaptively track cyclic disturbances in the controlled machine or process and reduce the effects of these cyclic disturbances on tracking error in the controlled machine or process.

Referring initially to <FIG>, an industrial control system <NUM> may include an industrial controller <NUM> providing multiple modules <NUM> and a bus <NUM> providing communication between the multiple modules <NUM>. The modules <NUM> may be installed within a housing or on a mounting bracket, such as a DIN rail. The bus <NUM> is typically a backplane coupled between modules <NUM> via suitable connectors. The modules may include, for example, a power supply module <NUM>, a processor module <NUM>, one or more I/O modules <NUM>, a motion control module <NUM>, and a network module <NUM>. The network module <NUM>, processor module <NUM>, or a combination thereof may communicate on an industrial control network <NUM>, such as ControlNet®, DeviceNet®, or EtherNet/IP®, between the industrial controller <NUM> and other devices connected to the industrial controller. The industrial controller <NUM> may be, for example, a programmable logic controller (PLC), a programmable automation controller (PAC), or the like. It is contemplated that the industrial controller <NUM> may include still other modules, such as an axis control module, or additional racks connected via the industrial control network <NUM>. Optionally, the industrial controller <NUM> may have a fixed configuration, for example, with a predefined number of network and I/O connections.

The industrial control network <NUM> may join the industrial controller <NUM> to remote <NUM>/O modules (not shown) and one or more remote motor drives <NUM>, the latter of which may communicate with corresponding electric motors <NUM> and position sensors <NUM> to provide for controlled motion of the electric motors <NUM>. The controlled motion of the electric motors, in turn, controls associated industrial machinery or processes <NUM>. While a single motor drive and motor may be referred to as an axis of motion, an axis of motion may also require multiple motors controlled by a single motor drive or multiple motor drives and multiple motors operating in tandem. The network <NUM> may also join with other devices <NUM>, <NUM> in the controlled machine or process <NUM>, including, for example, actuators <NUM>, controlled by output signals from the industrial controller <NUM>, or sensors <NUM>, providing input signals to the industrial controller.

A configuration computer <NUM> may communicate with the industrial controller <NUM> and/or the motor drives <NUM> over the industrial control network <NUM> or via a dedicated communication channel <NUM>, for example, connecting with the processor module <NUM>. The configuration computer <NUM> may be a standard desktop or laptop computer and include a keyboard <NUM>, display screen <NUM>, and the like to permit the entry and display of data and the operation of a configuration program by a human operator.

Referring next to <FIG>, the processor module <NUM> includes a processor <NUM> communicating with a memory device <NUM> to execute an operating system program <NUM>, generally controlling the operation of the processor module <NUM>, and a control program <NUM>, describing a desired control of the industrial machine or process <NUM>, where each control program <NUM> is typically unique to a given application of the industrial control system <NUM>. The memory <NUM> may also include data tables, for example, I/O tables and service routines (not shown in <FIG>) as used by the control program <NUM>.

The processor module <NUM> communicates via the bus <NUM>, illustrated as a backplane <NUM> extending between backplane connectors <NUM>, with the network module <NUM> or any of the other modules <NUM> in the industrial controller <NUM>. The network module <NUM> includes a control circuit <NUM>, which may include a microprocessor and a program stored in memory and/or dedicated control circuitry such as an application specific integrated circuit (ASIC) or field programmable gate array (FPGA). The control circuit <NUM> may communicate with a network interface circuit <NUM> within the network module <NUM>, where the network interface circuit <NUM> provides for execution of low-level electrical protocols on the industrial control network <NUM>. Similar network interface circuits <NUM> may be provided on other devices, such as the motor drives <NUM>, to provide communication between devices.

According to the illustrated embodiment, a motion control module <NUM> determines motion profiles for one or more of the motors <NUM> to follow. The motion profile may include a position reference signal (θ*), a velocity reference signal (ω*), an acceleration reference signal (α*), or a combination thereof to define the desired motion profile. The motion control module <NUM> includes a processor <NUM> in communication with a memory device <NUM> to execute one or more motion profile generators. It is contemplated that the motion control module <NUM> may execute a separate motion profile generator for each axis of motion. The reference signal, or signals, are transmitted from the motion control module <NUM> via the backplane <NUM> to the network module <NUM> and then via the industrial control network <NUM> to each motor drive. In some embodiments of the invention, it is contemplated that the processor module <NUM> may be configured to generate the motion profile for each axis and, in turn, generate the position reference signal (θ*), the velocity reference signal (ω*), the acceleration reference signal (α*), or a combination thereof.

In addition to a motion profile, the motion control module <NUM> or the processor module <NUM> is configured to generate a cycle position reference signal <NUM>. The cycle position reference signal <NUM> denotes at what point within a cyclical process the controlled machine or process is operating. According to one aspect of the invention, the cycle position reference signal <NUM> may be a value between zero and one or a value between zero and one hundred percent. The cycle position reference signal <NUM> is incrementally changed between zero and one as the controlled machine or process executes one cycle. When a cycle is complete, the cycle position reference signal <NUM> returns to zero. This example is not intended to be limiting. The cycle position reference signal <NUM> may be defined between any suitable range of values according to the application requirements, where each value provides an indication of a repeated point within the cycle. According to the illustrated embodiment, the cycle position reference signal <NUM> is transmitted via the industrial control network <NUM> to the motor drive <NUM>. Optionally, the cycle position reference signal <NUM> may be transmitted via a dedicated output signal or via a separate communication bus to the motor drive.

As noted above, the configuration computer <NUM> may be a standard desktop computer having a processor <NUM> communicating with a memory <NUM>, the latter holding an operating system program <NUM> as well as various data structures <NUM> and programs <NUM>. One such program <NUM> may be used to configure the industrial control system <NUM>. The configuration computer <NUM> may also provide for interface circuits <NUM> communicating between the processor <NUM>, for example, and the industrial network <NUM> or a separate communication channel <NUM> to the processor module <NUM>, as well as with the screen <NUM> and keyboard <NUM> according to methods understood in the art.

Turning next to <FIG>, a motor drive <NUM>, according to one embodiment of the invention, includes a power section <NUM> and a control section <NUM>. The power section <NUM> includes components typically handling, for example, <NUM>-<NUM> VAC or <NUM>-800VDC. The power section <NUM> receives power in one form and utilizes power switching devices to regulate power output to the motor <NUM> in a controlled manner to achieve desired operation of the motor <NUM>. The control section <NUM> includes components typically handling, for example <NUM> VAC or <NUM>-50VDC. The control section <NUM> includes processing devices, feedback circuits, and supporting logic circuits to receive feedback signals and generate control signals within the motor drive <NUM>.

According to the illustrated embodiment, the motor drive <NUM> is configured to receive a three-phase AC voltage at an input <NUM> of the motor drive <NUM> which is, in turn, provided to a rectifier section <NUM> of the motor drive <NUM>. The rectifier section <NUM> may include any electronic device suitable for passive or active rectification as is understood in the art. With reference also to <FIG>, the illustrated rectifier section <NUM> includes a set of diodes <NUM> forming a diode bridge that rectifies the three-phase AC voltage to a DC voltage on the DC bus <NUM>. Optionally, the rectifier section <NUM> may include other solid-state devices including, but not limited to, thyristors, silicon-controlled rectifiers (SCRs), or transistors to convert the input power <NUM> to a DC voltage for the DC bus <NUM>. The DC voltage is present between a positive rail <NUM> and a negative rail <NUM> of the DC bus <NUM>. A DC bus capacitor <NUM> is connected between the positive and negative rails, <NUM> and <NUM>, to reduce the magnitude of the ripple voltage resulting from converting the AC voltage to a DC voltage. It is understood that the DC bus capacitor <NUM> may be a single capacitor or multiple capacitors connected in parallel, in series, or a combination thereof. The magnitude of the DC voltage between the negative and positive rails, <NUM> and <NUM>, is generally equal to the magnitude of the peak of the AC input voltage.

The DC bus <NUM> is connected in series between the rectifier section <NUM> and an inverter section <NUM>. Referring also to <FIG>, the inverter section <NUM> consists of switching elements, such as transistors, thyristors, or SCRs as is known in the art. The illustrated inverter section <NUM> includes an insulated gate bipolar transistor (IGBT) <NUM> and a free-wheeling diode <NUM> connected in pairs between the positive rail <NUM> and each phase of the output voltage as well as between the negative rail <NUM> and each phase of the output voltage. Each of the IGBTs <NUM> receives gating signals <NUM> to selectively enable the transistors <NUM> and to convert the DC voltage from the DC bus <NUM> into a controlled three phase output voltage to the motor <NUM>. When enabled, each transistor <NUM> connects the respective rail <NUM>, <NUM> of the DC bus <NUM> to an electrical conductor <NUM> connected between the transistor <NUM> and the output terminal <NUM>. The electrical conductor <NUM> is selected according to the application requirements (e.g., the rating of the motor drive <NUM>) and may be, for example, a conductive surface on a circuit board to which the transistors <NUM> are mounted or a bus bar connected to a terminal from a power module in which the transistors <NUM> are contained. The output terminals <NUM> of the motor drive <NUM> may be connected to the motor <NUM> via a cable including electrical conductors connected to each of the output terminals <NUM>.

One or more modules are used to control operation of the motor drive <NUM>. According to the embodiment illustrated in <FIG>, a controller <NUM> includes the modules and manages execution of the modules. The modules may be stored programs executed on one or more processors, logic circuits, or a combination thereof. The controller <NUM> may be implemented, for example, in a microprocessor, application specific integrated circuit (ASIC), field programmable gate array (FPGA), or other such customizable device. The motor drive <NUM> also includes a memory device <NUM> in communication with the controller <NUM>. The memory device <NUM> may include transitory memory, non-transitory memory, persistent memory, or non-persistent memory, or a combination thereof. The memory device <NUM> is configured to store data and programs, which include a series of instructions executable by the controller <NUM>. The memory device <NUM> may be a single device, multiple devices, or incorporated, for example, as a portion of another device such as an application specific integrated circuit (ASIC). The controller <NUM> is in communication with the memory <NUM> to read the instructions and data as required to control operation of the motor drive <NUM>.

The controller <NUM> receives a reference signal <NUM> identifying desired operation of the motor <NUM> connected to the motor drive <NUM>. The reference signal <NUM> may be, for example, a position reference (θ*), a speed reference (ω *), a torque reference (T*), or a combination thereof. Although all three reference signals are illustrated in <FIG>, commonly one of the three input signals is selected and provided to the motor drive <NUM>. For a high-performance servo control system, the reference signal <NUM> is commonly a position reference signal (θ*). In addition, the controller <NUM> receives the cycle position reference signal <NUM>. The cycle position reference signal <NUM> provides an indication of a time, position, duration, or the like at which the controlled machine is presently operating within a repeated cycle. Although illustrated as separate input signals, the reference signal <NUM> and the cycle position signal <NUM> may be transmitted in a single data packet over the industrial network <NUM>. The reference signal <NUM> and the cycle position signal <NUM> may be transmitted at either the same or different periodic intervals according to the application requirements.

The cycle position reference signal <NUM> may be transmitted at a lower rate than the reference signal <NUM> for the motion profile. Further, the cycle position reference signal may be generated at discrete intervals and the motor drive <NUM> may be configured to interpolate between new values of the cycle position reference signal. For example, a cycle may take five seconds to complete. In many applications, the length of a cycle is fixed and repeatable. Therefore, the cycle position reference signal may not require frequent updating. The cycle position reference signal may be updated and a new value of the cycle position reference signal transmitted at a rate of ten times per second. The motor drive, however, may execute its control routines in a range of one thousand to ten thousand times per second. The motor drive receives the updated position reference signal <NUM> at the ten intervals per second and may interpolate one hundred to one thousand divisions of the cycle position reference signal between each new value received as a function of the frequency at which the control routine is being executed. As will be described in more detail below, the look up table <NUM> (see also <FIG>) may include increments of the cycle position corresponding to the frequency at which the control routine is being executed.

The controller <NUM> receives feedback signals indicating the current operation of the motor drive <NUM>. According to the illustrated embodiment, the controller <NUM> includes a feedback module <NUM> that may include, but is not limited to, analog to digital (A/D) converters, buffers, amplifiers, and any other components that would be necessary to convert a feedback signal in a first format to a signal in a second format suitable for use by the controller <NUM> as would be understood in the art The motor drive <NUM> may include a voltage sensor <NUM> and/or a current sensor <NUM> on the DC bus <NUM> generating a feedback signal corresponding to the magnitude of voltage and/or current present on the DC bus <NUM>. The motor drive <NUM> may also include one or more voltage sensors <NUM> and/or current sensors <NUM> on the output phase(s) of the inverter section <NUM> generating a feedback signal corresponding to the magnitude of voltage and/or current present on the electrical conductors <NUM> between the inverter section <NUM> and the output <NUM> of the motor drive. A position feedback device <NUM> may be connected to the motor <NUM> and operable to generate a position feedback signal, θ, corresponding to the angular position of the motor <NUM>. The motor drive <NUM> includes an input configured to receive the position feedback signal from the position feedback device <NUM>. It is contemplated that the input may configured to receive a sinusoidal feedback signal, a square wave, a digital pulse train, a serial communication data packet, or a combination thereof according to the configuration of the position feedback device <NUM>.

The controller <NUM> utilizes the feedback signals and the reference signals <NUM>, <NUM> to control operation of the inverter section <NUM> to generate an output voltage having a desired magnitude and frequency for the motor <NUM>. The feedback signals are processed by the feedback module <NUM> and converted, as necessary, to signals for the control module <NUM>.

With reference also to <FIG>, the control module <NUM> includes control loops <NUM> and filters <NUM>, as will be discussed in more detail below, to receive the command signal <NUM> and a feedback signal, such as a position feedback signal, and execute responsive to the command signal <NUM> and the feedback signals to generate a desired reference signal. The control module <NUM> also includes a load observer <NUM> to generate an estimated response of one or more operating characteristics of the motor <NUM>. The estimated response may be added to the reference signal from the control loops <NUM> to generate a modified reference signal. An estimated response may also be provided to a cycle observer <NUM>. The cycle observer <NUM> receives the cycle position reference signal <NUM> and an estimated acceleration <NUM> from the load observer <NUM> as inputs and generates a cyclical disturbance acceleration feed forward signal <NUM> as an output. As will be discussed in more detail below, the cycle observer <NUM> provides an estimate of cyclical disturbances experienced by the controlled machine or process to the control loops <NUM>. One or more filters <NUM> may be present in the control module <NUM> to reduce or eliminate undesired components of the modified reference signal. The output of the filter block <NUM> is a filtered reference signal. As shown in <FIG>, an optional inertia block <NUM> may be included in-line with the filters <NUM>. As will be discussed in more detail below, the inertial gain may be included in the inertia block <NUM> or, optionally, may be incorporated into gains within the control loops <NUM>. The filtered reference signal is provided to the inertia block which outputs a torque reference signal. The torque reference signal is, in turn, output to the current regulator <NUM>. As is understood in the art, the current regulator <NUM> may independently regulate a torque producing component of the current and a flux producing component of the current. The torque reference signal is provided as an input to the regulator controlling the torque producing component of the current. The current regulator <NUM> uses the torque reference signal and a current feedback signal to output a voltage signal to a gate driver module <NUM>. The gate driver module <NUM> generates the gating signals <NUM>, for example, by pulse width modulation (PWM) or by other modulation techniques. The gating signals <NUM> subsequently enable/disable the transistors <NUM> to provide the desired output voltage to the motor <NUM>, which, in turn, results in the desired operation of the mechanical load <NUM> coupled to the motor <NUM>. As is understood in the art, the current regulator <NUM> is configured to execute at a bandwidth sufficiently greater than the bandwidth of the control module <NUM> such that the current regulator <NUM> may be approximated as a unity gain to the control module <NUM>.

Referring next to <FIG>, a control module <NUM> according to one embodiment of the invention is illustrated. The control module <NUM> receives a position command signal (θ*) <NUM> as an input. The position command signal (θ*) <NUM> is compared to a position feedback signal (θ) at a first summing junction <NUM>. A position error signal is output from the first summing junction <NUM> and input to a position loop controller <NUM>. According to the illustrated embodiment, the position loop controller <NUM> includes a proportional and an integral (PI) controller. Optionally, the position loop controller <NUM> may be just a proportional (P) controller or further include a derivative (D) controller. Each of the proportional (P), integral (I), and/or derivative (D) controllers of the position loop controller <NUM> includes a controller gain value. The controller gain values are commonly referred to as a proportional gain (Kpp), integral gain (Kpi), and a derivative gain (Kpd). The output of the position loop controller <NUM> is a velocity reference signal (ω*).

The velocity reference signal (ω *) is compared to a velocity feedback signal (ω) at a second summing junction <NUM>. The velocity feedback signal (ω) is generated by a load observer <NUM>. Optionally, the velocity feedback signal (ω) may be determined by taking a derivative of the position feedback signal (θ). A velocity error signal is output from the second summing junction <NUM> and input to a velocity loop controller <NUM>. According to the illustrated embodiment, the velocity loop controller <NUM> includes a proportional and an integral (PI) controller. Optionally, the velocity loop controller <NUM> may be just a proportional (P) controller or further include a derivative (D) controller. Each of the proportional (P), integral (I), and/or derivative (D) controllers of the velocity loop controller <NUM> includes a controller gain value. The controller gain values are commonly referred to as a proportional gain (Kvp), integral gain (Kvi), and a derivative gain (Kvd). The output of the velocity loop controller <NUM> is an acceleration reference signal (α*).

The control module <NUM> may also include feed forward branches. According to the illustrated embodiment, the control module <NUM> includes feed forward branches for both the velocity and the acceleration elements. A velocity feed forward signal (ωFF) is added to the velocity reference signal and the velocity feedback signal at summing junction <NUM>, and an acceleration feedforward signal (αFF) is added to the acceleration reference signal at a third summing junction <NUM>. The output of the third summing junction <NUM> is a modified acceleration reference signal (α*').

The controller further includes a load observer <NUM>. The output of the third summing junction <NUM> is illustrated as being provided to the load observer <NUM>. According to one embodiment of the controller <NUM>, the load observer <NUM> determines an estimated acceleration disturbance (α̂) <NUM> as a function of the modified acceleration reference signal (α*') and position feedback signals (θ). This estimated acceleration disturbance may be added to the modified acceleration reference signal (α*') and provided to a fourth summing junction <NUM>. Optionally, the modified acceleration reference signal (α*') may be used internally by the load observer <NUM>, and the modified acceleration reference signal (α*') may be provided directly to the fourth summing junction <NUM> without modification by the load observer <NUM>.

The output of the fourth summing junction <NUM> is provided as an input to a filter section <NUM>. The filter section <NUM> may include one or more filters to remove unwanted components from the control system. Referring also to <FIG>, the illustrated filter section <NUM> includes a low pass filter <NUM> to attenuate undesirable high frequency components and a notch filter <NUM> to attenuate specific frequency components having an undesirable effect on the controlled mechanical load <NUM>. It is further contemplated that additional filters may be included in the filter section <NUM> without deviating from the scope of the invention.

According to the embodiment illustrated in <FIG>, the output of the filter section <NUM> is provided to a gain block <NUM>. The gain block <NUM> includes the inertia scaling block <NUM> shown in <FIG> and further includes a torque constant, KT. The inverse of the torque constant, KT, is used to convert a torque reference to a current reference, which is, in turn, provided to the current regulator <NUM> as seen in <FIG>. The inertia scaling block <NUM> applies a gain corresponding to the inertia of the controlled system. The gain of the inertia scaling block <NUM> is typically referred to simply as an inertia, J. The inertial gain may include a motor inertia value, Jm, a load inertia value, J<NUM>, or a combination thereof. While a motor inertia value may be known, or provided by a motor manufacturer, it may be difficult to accurately identify a load inertia value. The load observer <NUM> may compensate for inertial gains that either do not include a load inertia or do not accurately represent the load inertia.

As indicated above, the output of the control module <NUM> is provided to a current regulator <NUM> and gate driver module <NUM> to output a desired voltage to the motor <NUM>. The plant <NUM> shown in <FIG> represents components of the motor <NUM> and motor drive <NUM> external to the control module <NUM> and may incorporate the current regulator <NUM>, gate module <NUM>, and the inverter section <NUM> of the motor drive <NUM>, the motor <NUM>, a mechanical load <NUM>, and a position feedback device <NUM>. The position feedback device <NUM> generates the position feedback signal (θ) used by the control module <NUM>.

Although the reference signal from the third summing junction <NUM> is illustrated as an acceleration reference, a*, in <FIG>, in other embodiments, the output of the third summing junction may be a torque reference signal, T*. The inertial value from the gain block <NUM> may be incorporated into the controller gains. As is understood in the art, angular acceleration is proportional to torque and, more specifically, torque is equal to inertia times the angular acceleration. As a result, incorporating the inertia gain into the controller gains generates a torque reference signal rather than an acceleration reference signal. The acceleration feedforward and an estimated acceleration from the load observer <NUM> may similarly be converted to torque values by multiplying by the inertia value. The feedforward signal will then be a torque feedforward, TFF, and the estimated response generated by the load observer <NUM> is an estimated torque, T̂, applied to the motor shaft as a result of the load on the motor <NUM>. Because the inertial gains have been incorporated with the controller gains, the gain block <NUM> shown in <FIG> would simply include an inverse value of the torque constant, KT.

According to still another embodiment of the invention, it is contemplated that the calculations for the control module <NUM> may be performed in a per unit system. A per unit system employs scaling factors to convert values in physical units to values in a percentage, or per unit value, where the expected operational range for the value is converted to a value between zero and one or between zero and one hundred percent. Depending on the per unit system, a range of zero to one hundred percent acceleration may be equivalent to a range of zero to one hundred percent torque. As a result, a per unit value of acceleration would be equivalent to a per unit value of torque. Each reference signal and the filtered reference signal in the per unit system would be a unitless reference signal.

In operation, the present invention provides a system to monitor and adaptively decouple cyclical disturbances in the controlled machine or process <NUM>. Certain applications are executed in a cyclical manner. For example, a product may be traveling along a continuous drive member, such as a conveyor belt, or on a pallet which is, in turn, being driven along a processing path. Auxiliary equipment adjacent to the processing path may be configured to stamp or bend the product, apply a label to the product, print text or graphics on the product, or a combination thereof. The auxiliary equipment may include a drive motor <NUM> configured to move the equipment in a first direction to engage the product and then in a reverse direction to disengage the product. The auxiliary equipment is operated in a cyclical manner for each product passing by the equipment.

The cycle of operation for the auxiliary equipment typically does not correspond to a rotation of the drive motor <NUM>. Motion toward and away from the product may require only a partial turn of the motor or may require multiple turns of the motor. Further, each cycle of operation includes motion in one direction and motion in an opposite direction with potential stops at either end of travel. Thus, there is no correspondence between a cycle of operation for the auxiliary equipment and a position feedback signal generated by an encoder <NUM> mounted to the motor <NUM>.

Throughout each cycle of operation, a number of disturbance forces may be experienced by the motor <NUM>. The motor <NUM> may experience an initial disturbance force, for example, when overcoming static friction or as a result of windup in a gearbox during the start of the cycle. When the auxiliary equipment impacts the product for a stamping or folding operation or to adhere a label to the product, the motor <NUM> experiences a sudden change in torque. During a reversal of direction, the motor <NUM> may experience some instability or resonance in a mechanical coupling near, or transitioning through, zero speed. All of these disturbance forces may vary slightly over time due, for example, to variations in position of a product as it passes the equipment or from variations in ambient operating conditions. However, within each cycle, the disturbance forces are generally repeated and of similar amplitude for each cycle of operation. The disturbances may additionally create some tracking error within the motor drive <NUM> when they occur.

Although the controller <NUM> is configured to bring the tracking error back to zero, the cycle observer <NUM> monitors performance of the motor <NUM> and of the motor drive <NUM> throughout each cycle of operation to identify the disturbances experienced through one cycle of operation. With reference again to <FIG>, the illustrated load observer <NUM> determines an estimated acceleration disturbance (α̂) <NUM>. The estimated acceleration (α̂) <NUM> is a function of external disturbance forces experienced by the motor. This estimated acceleration (α̂) signal <NUM> and the cycle position signal <NUM> are provided to the cycle observer <NUM>. The cycle observer <NUM> stores the estimated acceleration (α̂) signal <NUM> received throughout one cycle of operation in a look up table and provides the value as a feedforward signal to the controller <NUM> to minimize tracking error resulting from cyclical operation of the controlled machine or process <NUM>.

During an initial run through one cycle of operation, the cycle observer <NUM> generates a look up table (LUT) <NUM> (see also <FIG> and <FIG>) corresponding to the estimated acceleration observed throughout the cycle of operation. The cycle position signal <NUM> is generated at multiple sample instances throughout one cycle of operation. According to the illustrated embodiment, the cycle is divided into one thousand sample instances. The cycle position signal <NUM> is a value between zero and one, where zero corresponds to a start of the cycle and one corresponds to the end of the cycle. Each sample instance is incremented by one one-thousandth (<NUM>). The LUT <NUM> includes an identifier for the increment <NUM> within the cycle and a value of the disturbance <NUM> determined by the load observer <NUM> at that sample instance. The LUT <NUM> is filled for each sample instance over one cycle of operation. The LUT <NUM> shown in <FIG> is exemplary and is not intended to be limiting. The look up table may store just disturbance values <NUM> having a known number of sample instances and have a fixed length. Similarly, the LUT <NUM> may include any number of sample instances. The number of sample instances may vary as a function of the length of time for one cycle of operation to occur or the desired resolution of the observed disturbances.

In some applications, the control module <NUM> may execute at a frequency greater than the resolution of the look up table. Thus, the position within the cycle changes at a greater rate, but smaller increment during each loop through the control module <NUM> than data stored in the look up table <NUM>. The control module <NUM> may utilize a disturbance value <NUM> at an increment <NUM> of the look up table <NUM> closest in position within the cycle to the present position as determined in the control module <NUM>. Alternately, the control module <NUM> may be configured to interpolate between two adjacent values <NUM> within the look up table <NUM>.

After an initial cycle of operation, the cycle observer <NUM> generates an acceleration feedforward value for use in the control module <NUM>. This acceleration feedforward value is shown as a cyclical acceleration feedforward (αcyc) signal <NUM> output from the cycle observer <NUM>. After the initial cycle of operation, the cyclical acceleration feedforward (αcyc) signal <NUM> corresponds to the values of the estimated acceleration (α̂) signal <NUM> generated during the initial run through one cycle of operation. During subsequent runs through the cycle of operation, the LUT <NUM> is continually updated by a cyclical disturbance filter routine.

With reference to <FIG>, a cyclical disturbance filter routine <NUM> is executing within the cycle observer <NUM> of the motor drive <NUM>. The cyclical acceleration feedforward (αcyc) signal <NUM> previously stored in the LUT <NUM> is added to a new estimated acceleration (α̂) <NUM> determined by the load observer <NUM> at a summing junction <NUM>. This sum as well as the cycle position signal <NUM> are provided as inputs to the cyclical disturbance filter routine <NUM>. The cyclical disturbance filter routine <NUM> may take a number of different forms. Two exemplary cyclical disturbance filter routines <NUM> are presented below in equations <NUM> and <NUM>.

A simple averaging filter may take the form of equation <NUM>. If a direct average is desired, the weighting value, w, may be set to one. With the weighting value set to one, the previously stored value and the new estimated acceleration are added together and divided by two. Optionally, the filtered value may be given a greater weighting value, such that historical data has a greater weight and that a new estimated acceleration value, which may include a temporary disturbance that is substantially different than the historical cyclical disturbance, does not disproportionately impact the cyclical disturbance value. <MAT> where:.

With reference to equation <NUM> above, the weighting value is preferably set to a value greater than one. In this manner, the historical data has a greater influence on the new value to be stored in the look up table than a single estimated acceleration value received from the observer <NUM>. As the value of the weighting value increases, the bandwidth of the filter decreases and the cyclical disturbance filter routine <NUM> will take an increased number of runs through the cycle to filter out cyclical disturbances more completely. However, once the cyclical disturbance filter routine <NUM> has accurately identified the cyclical disturbances, an increased weighting value will make the filter less susceptible to one-time disturbances that are detected by the load observer <NUM> and which are not part of the cyclical operation.

A more complex cyclical disturbance filter <NUM> is shown in equation <NUM>. Each new value of the cyclical acceleration feedforward (αcyc) signal <NUM> for the LUT <NUM> is determined as a function of prior values of the filtered acceleration both at the present position within the cycle of operation as well as adjacent positions within the cycle of operation. The principle behind the cyclical disturbance filter <NUM> of equation <NUM> is that the estimated acceleration value should not vary significantly over small changes in the cycle of operation. Thus, if the load observer <NUM> determines a new estimated acceleration disturbance (α̂) signal <NUM> that varies substantially from prior values of the cyclical acceleration feedforward (αcyc) signal <NUM>, the single outlier will not significantly impact the cyclical acceleration feedforward (αcyc) signal <NUM> stored in the LUT <NUM>. Equation <NUM> provides a first weighting value, w<NUM>, for the prior value stored in the LUT <NUM>; a second weighting value, w<NUM>, for the newly determined value of the estimated acceleration disturbance (α̂) signal <NUM> received from the load observer <NUM>; and a third weighting value, w<NUM>, for the prior estimated values of cyclical disturbance at sample instances immediately prior to and immediately following the current sample instance. <MAT> where:.

With reference to equation <NUM> above, the first weighting value, w<NUM>, is similar to the weighting value, w, of equation <NUM>. The first weighting value, w<NUM>, is preferably set to a value greater than one. In this manner, the historical data has a greater influence on the new value to be stored in the look up table than a single estimated acceleration value received from the observer <NUM>. The second weighting value, w<NUM>, is determined as a function of the distance that an actual position within a cycle is from a discrete position stored in the look up table <NUM>. As previously discussed, the control module <NUM> may execute at a frequency greater than resolution of the look up table. When the actual cycle position corresponds to a cycle increment <NUM> stored in the look up table <NUM>, the second weighting value, w<NUM>, is one. As the actual cycle position deviates from the cycle increment <NUM>, the second weighting value, w<NUM>, decreases. If the actual cycle position is directly between two increments of the look up table, the second weighting value, w<NUM>, is one-half. Therefore, the second weighting value, w<NUM>, will be a value between one-half and one (<NUM> -<NUM>). The third weighting value, w<NUM>, may be set to a value between zero and one-half (<NUM> - <NUM>), where the third weighting value is disabled when set to zero. The third weighting value, w<NUM>, allows the estimated disturbances determined for the adjacent sample instances have some weight, but less than the weighting for the prior and current values of the disturbance values at the present sample instance.

With reference next to <FIG>, a cyclical disturbance filter routine <NUM> may also execute on an external controller <NUM>. The external controller <NUM> is illustrated generally. However, with respect to the industrial control system <NUM> presented in <FIG>, the external controller <NUM> may be the industrial controller <NUM> or an external computing device, such as the configuration computer <NUM> shown in <FIG>. The motor drive <NUM> communicates the estimated acceleration (α̂) signal <NUM> determined by the load observer <NUM> back to the external controller <NUM> at each update interval of the motor drive <NUM>. The external controller <NUM> is able to process the data at a slower update rate and periodically transmit data for the LUT <NUM> back to the motor drive <NUM>.

If the external controller <NUM> is the industrial controller <NUM>, the cycle position value <NUM> will typically be generated by and is available within the industrial controller <NUM>. The estimated acceleration disturbance (α̂) signal <NUM> is received via the industrial control network <NUM> from the motor drive <NUM>. The external controller <NUM> maintains a copy of the look up table, illustrated as LUT' <NUM>. Similar to the cyclical disturbance filter routine <NUM> described above and executing on the motor drive <NUM>, the cyclical disturbance filter routine <NUM> executing on the external controller <NUM> is used to update the estimated disturbance observed by the motor over one cycle of operation. The cyclical acceleration feedforward (αcyc) signal <NUM> previously stored in the LUT' <NUM> is added to a new estimated acceleration disturbance (α̂) <NUM> determined by the load observer <NUM> at a summing junction <NUM>. This sum as well as the cycle position signal <NUM> are provided as inputs to the cyclical disturbance filter routine <NUM>. The cyclical disturbance filter routine <NUM> may similarly take a number of different forms, where equations <NUM> and <NUM> above are two exemplary forms.

The copy of the look up table may be updated more frequently than the LUT <NUM> on the motor drive. For example, the external controller <NUM> may execute the cyclical disturbance filter routine <NUM> for each sample instance in one cycle of operation, determining new values for each sample instance in the LUT' <NUM>. After determining new values over a complete cycle, the external controller <NUM> may transmit a copy of the entire LUT' <NUM> to the motor drive <NUM>. The motor drive, in turn, updates its own LUT <NUM> with the copy of the look up table received from the external controller. In some applications, it may be sufficient to update the LUT <NUM> in the motor drive every fifth or every tenth cycle of operation.

According to another aspect of the invention, the external controller <NUM> may be configured to monitor changes in value of the estimated disturbance over time. An initial set of values for the LUT' <NUM> may be stored as a reference table. The LUT' <NUM> may be updated continuously. After each cycle of operation, the external controller <NUM> may compare the new values in the LUT' <NUM> to the values in the reference table. If a difference between any of the new values in the LUT' <NUM> and the values at the corresponding sample instance in the reference table exceeds a predefined value, the external controller transmits the LUT' <NUM> to the motor drive <NUM> to update the LUT <NUM> in use on the motor drive. In this manner processing overhead on the motor drive <NUM> may be reduced and communication bandwidth on the industrial network <NUM> is also kept to a minimum by only transmitting new values for the LUT <NUM> as changes in the estimated disturbance necessitate.

Claim 1:
A method for dynamic observation of a cyclic disturbance in a controlled machine or process (<NUM>), the method comprising the steps of:
receiving a command signal at a motor drive (<NUM>), wherein the command signal corresponds to a desired operation of a motor (<NUM>) operatively controlled by the motor drive (<NUM>);
receiving a cycle position signal at the motor drive (<NUM>), wherein the cycle position signal corresponds to a location within one cycle of operation of the controlled machine or process (<NUM>) and wherein the cycle of operation does not correspond to one rotation of the motor (<NUM>);
determining a value of an estimated acceleration resulting from a disturbance force experienced by the motor (<NUM>) during the cycle of operation;
transmitting the estimated acceleration to an external controller (<NUM>);
receiving a filtered value of the estimated acceleration from the external controller (<NUM>);
storing the value of the estimated acceleration in memory (<NUM>) of the motor drive (<NUM>) at a plurality of sample instances within the cycle of operation, characterized in that the step of storing the value of the estimated acceleration in memory (<NUM>) includes storing the filtered value of the estimated acceleration received from the external controller (<NUM>) in memory (<NUM>) of the motor drive (<NUM>);
reading the value of the estimated acceleration that corresponds to the cycle position signal from the memory (<NUM>); and
adding the value of the estimated acceleration that corresponds to the cycle position signal to a control routine executing in the motor drive (<NUM>) to reduce a tracking error in the control routine.