Patent Description:
As is known to those skilled in the art, motor drives are commonly used to control operation of an Alternating Current (AC) motor. The motor drive is configured to convert a DC voltage, present on a DC bus within the motor drive, to an AC voltage to achieve desired operation of the motor. The AC voltage may have a varying amplitude, frequency, or combination thereof, to provide a desired speed and/or torque within the motor. The AC voltage is supplied to a stator of the motor generating a current through the stator. The current, in turn, establishes an electromagnetic field which rotates about the stator as a function of the frequency of the AC voltage being provided to the stator. The rotating electromagnetic field interacts with a magnetic field in the rotor of the motor to cause rotation of the rotor.

The electromagnetic field in the rotor may be obtained in numerous methods, depending on the type of AC motor to which the motor drive is connected. A synchronous motor may include slip rings by which a separate voltage may be provided to a winding in the rotor. The voltage provided to the winding establishes an electromagnetic field in the rotor to interact with the electromagnetic field in the stator. An induction motor includes a winding in the rotor in which a voltage is induced as a result of the rotating electromagnetic field in the stator. The induced voltage, in turn, establishes an electromagnetic field in the rotor to interact with the electromagnetic field in the stator. A permanent magnet motor includes magnets mounted on a surface of, or embedded within, the rotor of the motor. The magnetic fields generated by the permanent magnets interact with the electromagnetic field in the stator.

The windings and/or magnets in the rotor are typically provided in pairs, where each winding or magnet defines a pole of the motor and one pair of windings or one pair of magnets defines a pole-pair of the motor. A pair of windings is arranged to conduct in alternating directions in each winding, thereby generating opposing electromagnetic fields. A pair of magnets are arranged such that one magnet has a north pole and the other magnet has a south pole facing the stator winding. Multiple poles may be positioned around the rotor of the motor, where synchronous and induction motors commonly have lower pole counts, such as two, four, or six poles. Permanent magnet motors may have similar pole counts, but may also have higher pole counts, ranging up to <NUM>-<NUM> or even greater numbers of poles. As is understood in the art, the speed of rotation in the rotor is a function of both the frequency of the AC voltage applied to the stator and the number of poles present in the motor. As the number of poles increases, the speed of the rotor decreases. A slow speed rotor is particularly useful in a direct-drive application, where the rotor may be coupled directly to a driven member rather than requiring a gearbox positioned between the rotor of the motor and the driven member.

One application of a direct-drive permanent magnet motor is in an elevator. The rotor includes a sheave mounted on or integrally formed around the exterior of the rotor. The elevator ropes are wound over grooves on the sheave. An elevator cab is connected at one end of the ropes and a counter-weight is connected at the other end of the ropes. Rotation of the motor causes the ropes to move in the direction of the rotation which, in turn, raises and lowers the elevator cab. During operation of the elevator, it is desirable to provide a smooth ride for occupants of the cab. The motor begins motion at a slow speed and follows a smooth acceleration profile up to a top speed. As the elevator cab approaches a desired floor, the motor follows a smooth deceleration profile back down to the slow speed and finally to a stop as the elevator cab arrives at the desired floor.

Obtaining smooth operation at slow speed operation of a direct-drive permanent magnet motor is not without certain challenges. As previously indicated, desired operation of the permanent magnet motor is obtained by supplying an AC voltage to the stator to interact with the magnetic field generated by the permanent magnets. One cycle of the AC voltage, however, will interact with one pole-pair of the motor. When the pole count is low, such as a two-pole motor, a single cycle of AC voltage applied to the stator will result in a full revolution of the motor. When the pole count is high, such as with a forty-pole motor, a single electrical cycle of AC voltage applied to the stator will result in the rotor turning just one-twentieth of a revolution, or eighteen degrees. In order to achieve smooth operation of the motor, the electrical angle must be known with respect to the physical angle. To obtain knowledge of the electrical angle to one degree resolution for the afore-mentioned forty-pole motor, an encoder must generate at least seven thousand two hundred pulses per revolution (<NUM> ppr) or three hundred sixty degrees multiplied by twenty pole pairs. While this resolution is still marginal, some installations attempt to utilize encoders with lower resolution, such as, two thousand forty-eight pulses per revolution (<NUM> ppr) or four thousand ninety-six pulses per revolution (<NUM> ppr). With this lower resolution, the electrical angle may not be determined with sufficient resolution to provide smooth operation of the direct-drive permanent magnet motor. <CIT> discloses an encoder according to the state of the art.

Thus, it would be desirable to provide a system and method for increasing the resolution of position feedback for improved control of the motor with a low-resolution encoder.

Even when an application provides an encoder having sufficient resolution to determine the electrical angle, the direct-drive permanent magnet motor may be rotating at such a slow speed, that the feedback circuit detects few counts per periodic interval. A typical motor controller may read the number of counts received from an encoder at a two millisecond (<NUM>) interval. When a direct-drive permanent magnet motor is rotating slowly (for example, when an elevator application is either approaching or leaving a floor), the number of counts detected within the two millisecond interval may be in the single digits. The two millisecond sampling interval often is not an integral multiple of the frequency at which counts are being provided from the encode. Thus, at multiples of the two millisecond interval, one sampling interval will receive one additional count when compared to a series of prior sampling intervals. If the motor is supposed to be running at a constant speed as it approaches the landing, a single count variation between cycles will be at least a ten percent (<NUM>% error) in the velocity feedback. The motor controller will respond to the sudden variation in counts with a torque perturbation that, in turn, causes vibration in the system as the motor controller attempts to maintain the same number of counts per interval.

Thus, it would be desirable to provide a system and method increasing the resolution of position and/or velocity feedback for improved control of the motor during slow speed operation.

The present invention provides a system and method for increasing the resolution of position and/or velocity feedback for improved control of a motor with a low-resolution encoder and for improved control during slow speed operation of a direct-drive permanent magnet motor. A motor drive receives a position feedback signal from an encoder operatively connected to the motor. The motor drive executes a speed regulator module to achieve desired operation of the motor. The speed regulator receives a speed reference signal and a speed feedback signal to determine an error in the actual motor speed from a commanded motor speed. A controller uses the speed error to output a torque or current reference used by the motor drive to adjust the operating speed of the motor to obtain the desired operating speed.

The position feedback signal may be, for example, a sinusoidal waveform having either a single waveform or a pair of waveforms in quadrature. Optionally, the position feedback signal may be digital pulses having, for example, an A channel and a B channel in quadrature. Either the encoder or the motor drive may be configured to convert the position feedback signal into counts, where a count may be generated, for example, on a positive-to-negative transition in the feedback signal, a negative-to-positive transition in the feedback signal, or on both transitions. Traditionally the motor drive would be configured to detect each count and maintain a counter with a running total of each count received and the number of counts would be used directly by the speed regulator to control operation of the motor. However, with a low-resolution encoder or during slow speed operation of a high pole count motor, the number of counts received during each iteration of the speed regulator may be less than ten. The small number of counts may result in torque vibration in the motor.

To improve the resolution of the feedback signal, the motor drive is configured to execute multiple position determination modules. The position determination modules may be stored in the motor drive's memory and executed by its processor. They may also be implemented in the motor drive's position feedback circuit. Each of the position determination modules maintains an additional counter which generates a higher resolution count than the one maintained by the traditional method described above. Like the traditional method, a first counter is maintained and updated when a pulse is detected. However, on each iteration of a position determination module, the module increments its high-resolution counter by an amount equal to the current value of the first counter. Thus, if one count has been detected, the high-resolution counters will increment by one on each iteration of the approximation routine. After a second count is detected, the high-resolution counter will begin to increment by two, and so on. Each of these high-resolution counts is used to calculate an approximate motor shaft position, which are averaged to produce a more robust approximation. This average approximate position is used by the speed regulator in place of the traditional pulse count described above. Use of the additional counter generates a higher resolution feedback signal such that, at low count rates, the time at which encoder edges occur within a cycle is used to differentiate speed feedback signals even when the number of actual encoder counts received within one cycle of the speed regulator scan is the same.

According to one embodiment of the invention, a method for increasing the resolution of a position feedback signal to a motor drive is disclosed. A position feedback signal is received at an input to the motor drive, and the motor drive executes multiple position determination modules. Each of the position determination modules samples the position feedback signal, increments a pulse counter when a new pulse from the position feedback signal is detected, adds the pulse counter to a high-resolution pulse count register, and calculates an approximate position as a function of the high-resolution pulse count register. The motor drive calculates an average approximate position by averaging the approximate positions calculated by each of the position determination modules. The motor drive also executes a speed regulator. The speed regulator periodically executes at a slower rate than any of the multiple position determination modules and uses the average approximate position.

According to other aspects of the invention, the multiple position determination modules may execute at different frequencies. The different frequencies may be selected such that no position determination module executes at a frequency that is an integer multiple of the frequency at which any other position determination module executes. Sets of multiple position determination modules may also execute at different instances in time within one of the frequencies. In one embodiment, twelve position determination modules may be executed, with four position determination modules executing at a first frequency, four position determination modules executing at a second frequency, and four position determination modules executing at a third frequency. Each set of four position determination modules executing at one of the frequencies begins execution at different, equally spaced intervals within a period of the respective frequency.

According to still other aspects of the invention, the step of executing the speed regulator may include receiving a speed reference, converting the average approximate position to a speed feedback signal, and determining a speed error as a difference between the speed reference and the speed feedback signal. The high-resolution pulse count registers may also be reset during each iteration of the speed regulator.

According to another embodiment of the invention, a motor drive configured to increase resolution of a position feedback signal is disclosed. The motor drive includes an input configured to receive the position feedback signal and a processor configured to execute multiple instances of a first series of instructions and to execute a second series of instructions. The first series of instructions increments a pulse counter when a new pulse from the position feedback signal is detected, adds the pulse counter's value to a high-resolution pulse count register, and calculates an approximate position as a function of the high-resolution pulse count register. The second series of instructions calculates an average approximate position by averaging the approximate positions calculated by each instance of the first series of instructions. The second series of instructions also executes a speed regulator that iterates at a slower rate than any instance of the first series of instructions and uses the average approximate position.

According to other aspects of this embodiment of the invention, each instance of the first series of instructions executes at a frequency which is different than the frequency for each of the other instances of the first series of instructions. The different frequencies may be selected such that no instance of the first series of instructions executes at a frequency that is an integer multiple of the frequency at which any other instance of the first series of instructions is executing. The multiple instances of the first series of instructions may also execute at different instances in time within one of the frequencies.

According to yet another embodiment of the invention, a method for increasing the resolution of a position feedback signal to a motor drive is disclosed. A position feedback signal is received at an input to the motor drive. Multiple approximate positions are calculated as functions of the position feedback signal, where each of the approximate positions is determined at one of multiple frequencies. An average approximate position is determined by averaging the multiple approximate positions, and the resulting average approximate position is used by a speed regulator executed on the motor drive.

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. Many changes and modifications may be made within the scope of the present invention without departing from the spirit thereof, and the invention includes all such modifications.

However, it is not intended that the invention be limited to the specific terms so selected, and it is understood that each specific term includes all technical equivalents which operate in a similar manner to accomplish a similar purpose.

Turning initially to <FIG>, an exemplary counterbalancing system, as shown in the exemplary elevator system <NUM>, is provided in accordance with an embodiment of the invention. A shaft <NUM> includes a cab <NUM> configured to move up and down the shaft <NUM>. The cab <NUM> includes, for example, wheels configured to engage rails <NUM> extending vertically along each side of the shaft <NUM> to maintain horizontal alignment of the cab <NUM> within the shaft <NUM>. Cables <NUM> extending around one or more cab sheaves <NUM> (a grooved spindle or pulley) mounted to the top of the cab <NUM> may be used to raise or lower the cab <NUM> within the shaft <NUM>. According to the illustrated embodiment, a first end of the cables <NUM> are fixedly mounted to a first point at the top of the shaft <NUM> and routed down and around the cab sheave <NUM> mounted to the top of the cab <NUM>. The cables <NUM> are then routed over one or more drive sheaves <NUM> mounted to an electrical motor <NUM>. The cables <NUM> continue around one or more counterweight sheaves <NUM> mounted to a counterweight <NUM> and back to a second point at the top of the shaft <NUM>. It is contemplated that various other configurations of cables, sheaves, and cable routing may be utilized according to the application requirements without deviating from the scope of the invention.

According to the illustrated embodiment, the motor <NUM> may be mounted in a machine room located above the elevator shaft <NUM>. Optionally, the motor <NUM> may be mounted in the elevator shaft <NUM>. A brake <NUM>, is operatively connected to the motor <NUM> to provide braking in the system, and an encoder <NUM> is operatively connected to the motor <NUM> to provide a feedback signal corresponding to an angular position of the motor <NUM>. According to the illustrated embodiment, a control cabinet <NUM> is provided in the machine room. The control cabinet <NUM> may include a motor drive <NUM> to control operation of the motor and a separate controller <NUM> providing instructions to the motor drive <NUM>. A junction box <NUM> may be mounted to the top of a housing <NUM> of the motor <NUM>, and electrical conductors <NUM> may run between the control cabinet <NUM> and the junction box <NUM>, the motor <NUM>, the brake <NUM>, and the encoder <NUM> to connect the motor drive <NUM> and the controller <NUM> with the motor, brake, and encoder. The electrical conductors <NUM> conduct electrical power and control signals to or feedback signals from the motor <NUM>, the brake <NUM> and encoder <NUM> as will be further described.

Referring also to <FIG>, the motor drive <NUM> includes a power conversion section <NUM> and a control section <NUM>. The power conversion section <NUM> converts the input power <NUM> to the desired voltage at the output <NUM>. According to the illustrated embodiment, the power conversion section <NUM> includes a rectifier section <NUM> and an inverter section <NUM>, converting a fixed AC input <NUM> to a variable amplitude and variable frequency AC output <NUM>. Optionally, other configurations of the power conversion section <NUM> may be included according to the application requirements. The rectifier section <NUM> is electrically connected to the power input <NUM>. The rectifier section <NUM> may be either passive, such as a diode bridge, or active, including controlled power electronic devices such as transistors. The rectifier section <NUM> converts the AC voltage input <NUM> to a DC voltage present on a DC bus <NUM>. The DC bus <NUM> may include a bus capacitance <NUM> connected across the DC bus <NUM> to smooth the level of the DC voltage present on the DC bus <NUM>. As is known in the art, the bus capacitance <NUM> may include a single capacitor, or multiple capacitors, arranged in serial, parallel, or a combination thereof according to the power ratings of the motor drive <NUM>. An inverter section <NUM> converts the DC voltage on the DC bus <NUM> to the desired voltage at the output <NUM> for the motor <NUM> according to switching signals <NUM>.

The control section <NUM> receives a command signal <NUM> and feedback signals and generates the switching signals <NUM> responsive to the command and feedback signals to achieve desired operation of the motor <NUM>. The control section <NUM> includes a processor <NUM> connected to a memory device <NUM>. It is contemplated that the processor <NUM> may be a single processor or multiple processors operating in tandem. It is further contemplated that the processor <NUM> may be implemented in part or in whole on a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), a logic circuit, or a combination thereof. The memory device <NUM> may be a single electronic device, or multiple electronic devices, including static memory, dynamic memory, transitory memory, non-transitory memory, or a combination thereof. The memory device <NUM> preferably stores parameters of the motor drive <NUM> and one or more programs, which include instructions executable on the processor <NUM>. A parameter table may include an identifier and a value for each of the parameters. The parameters may, for example, configure operation of the motor drive <NUM> or store data for later use by the motor drive <NUM>.

A motor control module may be stored in the memory <NUM> for execution by the processor <NUM> to control operation of the motor <NUM>. The processor <NUM> receives feedback signals, <NUM> and <NUM>, from sensors, <NUM> and <NUM> respectively. The sensors, <NUM> and <NUM>, may include one or more sensors generating signals, <NUM> and <NUM>, corresponding to the amplitude of voltage and/or current present at the DC bus <NUM> or at the output <NUM> of the motor drive <NUM> respectively. The processor <NUM> also receives a position feedback signal <NUM> from the position sensor <NUM>, such as an encoder or resolver, mounted to the motor <NUM>. The switching signals <NUM> may be determined by an application specific integrated circuit <NUM> receiving reference signals from a processor <NUM> or, optionally, directly by the processor <NUM> executing the stored instructions. The switching signals <NUM> are generated, for example, as a function of the feedback signals, <NUM>, <NUM>, and <NUM>, received at the processor <NUM>.

The controller <NUM> in the control cabinet <NUM> may similarly include a processor and a memory device. It is contemplated that the processor for the controller <NUM> may be a single processor or multiple processors operating in tandem. It is further contemplated that the processor for the controller <NUM> may be implemented in part or in whole on a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), a logic circuit, or a combination thereof. The memory device for the controller <NUM> may be a single electronic device, or multiple electronic devices, including static memory, dynamic memory, transitory memory, non-transitory memory, or a combination thereof. The memory device for the controller preferably stores parameters for operation of the elevator <NUM> and one or more programs, which include instructions executable on the processor for the controller <NUM>.

In operation, the processor <NUM> receives a command signal <NUM>, indicating a desired operation of the corresponding motor <NUM> in the elevator system <NUM>, and provides a variable amplitude and frequency output voltage to the motor <NUM> responsive to the command signal <NUM>. The command signal <NUM> is received by the processor <NUM> and converted, for example, from discrete digital signals or an analog signal to an appropriately scaled speed reference <NUM> for use by a control module <NUM> within the motor controller <NUM> (see also <FIG>). The position feedback device <NUM> provides the position feedback signal <NUM> to the processor <NUM>. The position feedback signal <NUM> is converted to a speed feedback signal <NUM> as will be discussed in more detail below. The speed reference <NUM> and a speed feedback signal <NUM> enter a summing junction <NUM>, resulting in a speed error signal <NUM>. The speed error signal <NUM> is provided as an input to a speed regulator <NUM>. The speed regulator <NUM>, in turn, determines a required torque reference <NUM> to minimize the speed error signal <NUM>, thereby causing the motor <NUM> to run at the desired speed reference <NUM>. A scaling factor <NUM> converts the torque reference <NUM> to a desired current reference <NUM>. The current reference <NUM> and a current feedback signal <NUM>, derived from a feedback signal generated by a current sensor <NUM> measuring the current present at the output of the motor drive <NUM>, enter a second summing junction <NUM>, resulting in a current error signal <NUM>. The current error signal is provided as an input to the current regulator <NUM>. The current regulator <NUM> generates the voltage reference <NUM> which will minimize the error signal <NUM>, again causing the motor <NUM> to run at the desired speed reference <NUM>. This voltage reference <NUM> is used to generate the switching signals <NUM> which control the inverter section <NUM> to produce a variable amplitude and frequency output voltage to the motor <NUM>.

With reference next to <FIG>, an exemplary position feedback signal <NUM> is illustrated. According to the illustrated embodiment, the exemplary position feedback signal <NUM> includes an A-channel <NUM> and a B-channel <NUM>, where the B-channel is shifted in phase from the A-channel by ninety degrees. The A and B channels are commonly referred to as quadrature signals, and the direction of rotation of the motor <NUM> can be determined by monitoring which channel is leading the other channel. When the motor <NUM> is rotating in one direction, the A-channel <NUM> will lead the B-channel <NUM>, and when the motor <NUM> is rotating in the other direction, the B-channel <NUM> will lead the A-channel <NUM>. Each cycle, including a logical high segment and a logical low segment, is considered a single pulse from the position feedback device <NUM>. As previously indicated, position feedback devices <NUM> are configured to generate a number of pulses per revolution of the position feedback device <NUM>. The number of pulses per revolution (ppr) may be, for example, <NUM>, <NUM>, <NUM>, or the like. Because each position feedback device <NUM> is commonly coupled directly to the rotor of the motor <NUM>, the number of ppr defined for the position feedback device <NUM> is typically the same ppr generated for each rotation of the motor <NUM>. For purposes of discussion herein, it will be assumed that the encoder <NUM> is directly coupled to the rotor of the motor <NUM> and ppr of the encoder or ppr of the motor may be used interchangeably.

The illustrated position feedback signal <NUM> is intended to be exemplary only and is not limiting. It is understood that other forms of position feedback signals <NUM> may be utilized without deviating from the scope of the invention. The position feedback signal <NUM> may include, for example, differential signals, including an inverted A-channel and an inverted B-channel. Optionally, the position feedback signal <NUM> may include a sinusoidal waveform or a pair of sinusoidal waveforms, where one sinusoidal waveform is shifted in phase by ninety degrees from the second sinusoidal waveform. According to still another option, the position feedback signal <NUM> may be included as data in a data packet transmitted from the encoder via any standard or industrial protocol for data communications.

<FIG> illustrate two different velocities for the motor <NUM>. In <FIG>, the motor generates five pulses per sample period, while in <FIG>, the motor generates less than one pulse per sample period. Within <FIG>, the sample period is the duration of time between time indications along the x-axis. The duration of time between t<NUM> and t<NUM> is a first sample period, and the duration of time between t<NUM> and t<NUM> is a second sample period. The duration of the sample periods illustrated in <FIG> are considered to be the same. Because the rate at which the A-channel and B-channel change in <FIG> is faster than the rate at which they change in <FIG> indicates the motor <NUM> is rotating at a faster speed to generate the illustrated position feedback signal <NUM> than the speed required to generate the position feedback signal <NUM> shown in <FIG>.

Also illustrated in <FIG> is an additional signal <NUM> labelled as counts. As may be observed from <FIG>, a count is generated at each transition from high-to-low or from low-to-high for each channel <NUM>, <NUM> of the position feedback signal <NUM>. Monitoring each edge transition allows for an initial increase in the resolution of the position feedback signal <NUM>. As illustrated, there are four counts <NUM> for each pulse of the position feedback signal <NUM>. A first count is generated at the transition from high-to-low of the A channel <NUM>, and a second count is generated at the transition from high-to-low of the B channel <NUM>. A third count is generated at the transition from low-to-high of the A channel <NUM>, and a fourth count is generated at the transition from low-to-high of the B channel <NUM>. The feedback resolution per sample period in <FIG> is increased from five pulses per sample period to twenty counts per sample period. The feedback resolution is also increased in <FIG>. However, it is noted that in the first sample period, the resolution is increased from one pulse to three counts, and in the second sample period, the resolution is increased from one pulse to four counts. This results in a twenty-five percent variation in the speed feedback during consecutive sample periods. The speed regulator <NUM> would attempt to maintain a constant speed creating a torque ripple at the motor <NUM> as the speed regulator <NUM> repeatedly slows down and speeds up the motor.

The motor drive <NUM> includes a feedback circuit configured to receive the position feedback signal <NUM>. It is contemplated that the feedback circuit may include buffers, discrete logic circuits, or even a dedicated processor to perform some initial processing on the position feedback signal <NUM> prior to passing the feedback signal to the processor <NUM>. The feedback circuit may be a daughter board that is inserted into the motor drive <NUM> according to the type of feedback signal <NUM> being utilized. The feedback circuit may, for example, be configured to receive the quadrature pulses illustrated in <FIG>, sinusoidal waveforms, or a serial communication protocol. According to one embodiment of the invention, the feedback circuit is configured to convert the position feedback signal <NUM> to counts <NUM>. According to another embodiment of the invention, the processor <NUM> may convert the position feedback signal to counts <NUM>.

Turning now to <FIG>, the present invention provides still further improvement on resolution by executing multiple position determination modules 300A-N. The position determination modules 300A-N may be stored in the motor drive's memory <NUM> and executed by its processor <NUM>. Alternatively, the position determination modules 300A-N may be implemented in the motor drive's position feedback circuit. Each of the multiple position determination modules 300A-N is configured to receive and sample the position feedback signal <NUM> and determine an approximate motor shaft position <NUM> as a function of the position feedback signal. In a preferred embodiment, each position determination module <NUM> is configured to execute the same set of steps to determine the approximate position <NUM> of the motor shaft. Alternatively, one position determination module <NUM> or set of position determination modules may be configured to execute a different set of steps than another position determination module or set of position determination modules. Similarly, one position determination module <NUM> or set of position determination modules may be configured to execute at a different frequency or at a different time than another position determination module or set of position determination modules. The approximate positions 302A-N determined by each of the multiple position determination modules 300A-N are summed <NUM> and the result is divided <NUM> by the total number of position determination modules to provide an average approximate position <NUM>. This value is used by the speed regulator <NUM> to control function of the motor <NUM>.

<FIG> illustrates a set of steps that may be executed by a position determination module <NUM>. At step <NUM>, the processor <NUM> reads the value of counts <NUM> from memory <NUM>. The processor <NUM> then checks to see if new counts from the position feedback signal <NUM> have been detected, as illustrated in step <NUM>. If new counts have been detected, the number of new counts detected is added to the value of counts <NUM> previously read from memory <NUM> and the new value of counts is stored in memory as shown in step <NUM>. If no new counts were detected at step <NUM>, the processor <NUM> skips down to step <NUM>. At step <NUM>, the processor <NUM> adds the value of counts <NUM> to the high-resolution counts register <NUM>. Finally, at step <NUM>, the processor <NUM> determines an approximate position as a function of the value in the high-resolution counter <NUM>.

The steps illustrated in <FIG> are configured to execute at a faster frequency than the speed regulator <NUM> executes. With reference again to <FIG>, the control module <NUM> includes a speed regulator <NUM> and a current regulator <NUM>. The illustrated control module <NUM> is intended to be exemplary and not limiting and it is understood that various other control loops may be included, such as feed-forward paths, additional cascaded control loops, observers, and the like. The two illustrated regulators, however, are fundamental components and are typically configured to execute at two different rates. The speed regulator <NUM>, as the first control loop in the cascaded control structure, executes at a slower rate than the current regulator <NUM>, as the second control loop in the cascaded control structure. In this manner, the current regulator <NUM> is able to respond to changes to the current reference signal <NUM> and to regulate the voltage output to the motor <NUM> to maintain operation of the motor at the current reference. According to an exemplary embodiment, the speed regulator <NUM> may be configured to operate at a rate of <NUM> hertz (<NUM>). The current regulator <NUM> may be configured to operate at a user selectable rate ranging from about five kilohertz (<NUM>) to about twenty kilohertz (<NUM>). This allows the processor <NUM> to execute the instructions for the current regulator <NUM> between about ten and forty times for each time the processor executes the instructions for the speed regulator <NUM>. Similarly, a position determination module may be configured to operate at a rate of between about ten kilohertz (<NUM>) to about twenty-five kilohertz (<NUM>). This allows the processor to execute the instruction for a position determination module between about twenty and fifty times for each time the processor executes the instructions for the speed regulator.

With reference next to <FIG>, exemplary operation of a position determination module, executing the steps illustrated in <FIG>, is illustrated for two different slow speed operations of the motor <NUM>. In the illustrated embodiment, the speed regulator <NUM> is configured to execute at a rate of five hundred hertz (<NUM>). Thus, the speed regulator <NUM> executes once at the start of the time shown in each plot and will execute a second time after the <NUM> time stamp shown. The instructions for increasing resolution of the speed feedback signal <NUM> are performed at a rate of ten kilohertz (<NUM>) and, therefore, occur twenty times for each execution of the speed regulator.

While both <FIG> illustrate operation of the motor <NUM> at a speed for which three counts <NUM> are detected during the first execution of the speed regulator <NUM>, it is evident that the motor <NUM> is rotating at different velocities in each figure. In <FIG>, the fourth count will occur almost immediately after the end of the first execution of the speed regulator <NUM>, and in <FIG>, the third count occurs just before the end of the first execution of the speed regulator <NUM>, such that the fourth count would occur at some instance into the next execution of the speed regulator <NUM>. The values of the high-resolution counts <NUM> illustrate this difference in speed of the motor <NUM>.

In <FIG>, the first count <NUM> is detected just after five hundred microseconds. For the first five iterations of the exemplary position determination module, the number of counts <NUM> detected is zero. Therefore, at step <NUM> in <FIG>, zero is being added to the high-resolution counter <NUM>. After detecting the first count <NUM>, the processor <NUM> begins incrementing the high-resolution counter <NUM> by one count. The values <NUM> of the high-resolution counter are shown being incremented by one. The second count <NUM> is detected between one millisecond and one and one tenth of a millisecond, or during the tenth iteration of the exemplary position determination module <NUM>. With the detection of a new count, the processor begins incrementing the values <NUM> of the high-resolution counter <NUM> by two. Similarly, the third count <NUM> is detected between one and five-tenths of a millisecond and one and six-tenths of a millisecond, or during the fifteenth iteration of the exemplary position determination module <NUM>, and the processor begins incrementing the values <NUM> of the high-resolution counter <NUM> by three. At the end of the first execution of the speed regulator <NUM>, the high-resolution counter <NUM> has thirty high-resolution counts <NUM>.

In <FIG>, the first count <NUM> is detected just after six hundred microseconds. For the first six iterations of the exemplary position determination module, the number of counts <NUM> detected is zero. Therefore, at step <NUM> in <FIG>, zero is being added to the high-resolution counter <NUM>. After detecting the first count <NUM>, the processor <NUM> begins incrementing the high-resolution counter <NUM> by one count. The values <NUM> of the high-resolution counter are shown being incremented by one. The second count <NUM> is detected between one and two-tenths of a millisecond and one and three-tenths of a millisecond, or during the twelfth iteration of the exemplary position determination module <NUM>. With the detection of a new count, the processor begins incrementing the values <NUM> of the high-resolution counter <NUM> by two. Similarly, the third count <NUM> is detected between one and nine-tenths of a millisecond and two milliseconds, or during the nineteenth iteration of the exemplary position determination module <NUM>, and the processor begins incrementing the values <NUM> of the high-resolution counter <NUM> by three. At the end of the first execution of the speed regulator <NUM>, the high-resolution counter <NUM> has twenty-three high-resolution counts <NUM>. Thus, while the number of counts <NUM> would indicate that the motor is operating at an identical speed, the number of high-resolution counts <NUM> is able to differentiate in the velocity of the motor <NUM> between <FIG>.

While the position determination module <NUM> illustrated in <FIG> is capable of distinguishing between different low speed motor position feedback <NUM> signals with the same number of counts <NUM> per period, the position determination module's execution rate and start time can influence its position approximation. Turning now to <FIG>, the effect of execution rate on a position determination module <NUM>, executing the steps illustrated in <FIG> is shown. Both illustrated position determination modules <NUM> are configured to receive the same position feedback signal <NUM>, and both begin execution at the same instance in time. The position determination module <NUM> of <FIG>, however, is configured to execute at a rate of twenty kilohertz, while that of <FIG> is configured to execute slightly faster, at a rate of twenty-five kilohertz. Because the high-resolution counter <NUM> increments on every iteration of a position determination module <NUM> executing the steps illustrated in <FIG>, faster execution rates will, in many cases, result in a larger high-resolution counter value. This phenomenon is clearly seen in <FIG>. At the end of the illustrated period, the high-resolution counts <NUM> of <FIG> has a count value of sixty, while that of <FIG> has a count value of seventy-three.

A similar phenomenon occurs when a position determination module <NUM> begins executing at different instances in time relative to the position feedback signal <NUM> being sampled. Turning next to <FIG>, two position determination modules <NUM> performing the steps illustrated in <FIG> are shown. Both are executing at the same frequency, and both are sampling the same position feedback signal <NUM>. The position determination module <NUM> of <FIG>, however, begins executing about one half of a millisecond after that of <FIG>. Even though both position determination modules <NUM> detect seven pulses in a two-millisecond period, the slight deviation in start time results in the position determination module of <FIG> detecting its first pulse during its first execution period within a two millisecond window whereas the position determination module of <FIG> executes three times within a two millisecond window before detecting a pulse. Accordingly, the high-resolution counter <NUM> of <FIG> begins incrementing sooner within a two millisecond time interval and has a value of eighty after two milliseconds while the high-resolution counter of <FIG> has a value of sixtyfive after the same amount of time.

To mitigate the influence that execution frequency and start time can have on the approximate position <NUM> determined by a position determination module <NUM> executing the steps illustrated in <FIG>, it is desirable to execute several position determination modules. Furthermore, the execution frequencies and start times should be chosen such that if anomalous approximations occur, they only occur in one, or a small subset, of position determination modules <NUM>, so that the effect of the anomalous approximations is minimized when averaged with the approximations produced by the other position determination modules.

<FIG> and <FIG> illustrate such an exemplary configuration. <FIG> illustrates three sets 400A-C of four position determination modules <NUM>. The position determination modules <NUM> in each set <NUM> are configured to receive and sample the same position feedback signal and to execute at the same frequency, such that each position determination module <NUM> in one set has the same sample rate and sample period. The position determination modules <NUM> within each set <NUM> are, however, configured to start executing at different instances in time. The second position determination module <NUM> in one set is configured to begin execution at some time after the first position determination module within the same set begins executing. Likewise, the third position determination module in the set is configured to begin execution at some time after the second position determination module begins executing, and the fourth position determination in the set module is configured to begin execution at some time after the third position determination module begins executing. According to one aspect of the invention, each of the four position determination modules <NUM> within a set <NUM> begins execution at an equally spaced interval within one period of the frequency at which the set <NUM> operates. This equally spaced interval in time, therefore, would be equal to one quarter of the period in which the set <NUM> executes. Starting each position determination module <NUM> within one set <NUM> at a difference instance in time creates a phase shift between position determination modules within the set. This equally spaced interval for four position determination modules <NUM> represents a ninety degree phase shift between position determination modules. According to another aspect of the invention, each of the four position determination modules <NUM> within a set <NUM> may begin execution at staggered, but random, start intervals within one period of the frequency at which they operate. The illustrated embodiment shows four position determination modules <NUM> in a set <NUM> executing at the same frequency. The number of modules <NUM> within a set <NUM> is not intended to be limiting. It is contemplated that a set <NUM> may include a single position determination module <NUM> may, therefore, execute independently at various frequencies. Still other numbers of position determination modules <NUM>, such as two, three, or more than four, may execute at any given frequency within a set <NUM> where each position determination module executing at a particular frequency starts execution at a different instance within one period of the given frequency for the set <NUM>.

In <FIG> and <FIG>, three sets 400A-C of position determination modules <NUM> are illustrated. Each set <NUM> of the position determination modules <NUM> is configured to execute at a different frequency, resulting in unique high speed sample rates for each set <NUM> of position determination modules. As discussed above, a single position determination module <NUM> may be provided in each set <NUM>, such that each position determination module executes at a different frequency. Alternately, multiple position determination modules <NUM> may be included in each set <NUM>. In still another aspect of the invention each set <NUM> of position determination modules <NUM> may include a different number of position determination modules within the set. According to the illustrated embodiment in <FIG> and <FIG>, three sets 400A-C of position determination modules <NUM> each include four position determination modules for a total of twelve position determination modules executed by the exemplary motor drive <NUM>. As previously mentioned, each of the three sets 400A-C of position determination modules <NUM> are configured to execute at different frequencies. Additionally, the correlation between position determination modules <NUM> is further reduced when the selected frequencies are such that none of the frequencies for one set <NUM> of position determination modules is an integer multiple of another set <NUM> of position determination modules. For example, the three frequencies for the illustrated embodiment may be fifteen kilohertz, twenty kilohertz, and twenty-five kilohertz. The first set 400A of position determination modules <NUM> shown in <FIG> and <FIG> executes at fifteen kilohertz. The second set 400B of position determination modules <NUM> shown in <FIG> and <FIG> executes at twenty kilohertz. The third set 400C of position determination modules <NUM> shown in <FIG> and <FIG>, executes at twenty-five kilohertz. Optionally, the selected frequencies may have a low order least common multiple. While this results in some correlation between sets <NUM> of position determination modules <NUM>, the correlation is substantially reduced in comparison to sets <NUM> of position determination modules <NUM> executing at frequencies which are integral multiples of one another.

The average approximate position <NUM> is calculated by averaging the approximate positions <NUM> determined by all of the position determination modules <NUM>. According to a first aspect of the invention, illustrated in <FIG>, the approximate position <NUM> of each of the position determination modules <NUM> is summed <NUM> together and divided <NUM> by a total number of modules. According to a second aspect of the invention, illustrated in <FIG>, each set <NUM> of position determination modules <NUM> determines a first average approximate position 310A-C by summing <NUM> each of the approximate positions <NUM> determined by each of the position determination modules executing within the set and dividing <NUM> the sum by the total number of position determination modules within the set. After determining an approximate position 310A-C from each set <NUM> of position determination modules <NUM>, the approximate position from each set may be added <NUM> together and divided <NUM> by the number of sets to determine the average approximate position <NUM>. It should be understood that the embodiment of the invention illustrated in <FIG> and <FIG> is exemplary and that other quantities of position determination modules <NUM> or combinations of frequencies and start times may be used without deviating from the spirit of the invention.

Claim 1:
A method for increasing resolution of a position feedback signal (<NUM>) to a motor drive (<NUM>), the method comprising the steps of:
receiving a position feedback signal (<NUM>) at an input to the motor drive (<NUM>);
determining a plurality of approximate positions (<NUM>), wherein each of the plurality of approximate positions is determined at one of a plurality of frequencies and as a function of the position feedback signal;
determining an average approximate position (<NUM>) by averaging the plurality of approximate positions (<NUM>); and
executing a speed regulator (<NUM>) in the motor drive (<NUM>), wherein the speed regulator uses the average approximate position.