This disclosure is related to resolvers, and methods and systems for determining rotational positions associated therewith.
Devices that include rotatable members may employ resolvers to monitor rotational position and rotational speed of the rotor. By way of non-limiting examples, powertrain systems may employ electrically-powered torque machines to generate tractive torque for propulsion. Known torque machines include multiphase electric motor/generators that electrically couple to energy storage devices via high-voltage electric buses and inverter modules. Torque machines may use resolvers to monitor rotational position and rotational speed, and use such information for control and operation thereof.
A resolver is an electromechanical transducer that includes a rotor having an excitation winding that is coupled to the rotatable member and a stator having secondary windings that are coupled to a non-rotating member of the device, wherein electromagnetic coupling between the primary winding and the secondary windings varies with the rotational position of the rotor. The primary winding may be excited with a sinusoidal signal, which induces differential output signals in the secondary windings. The magnitude of the electrical coupling onto the secondary windings relates to the rotational position of the rotor relative to that of the stator and an attenuation factor known as the resolver transformation ratio. In certain embodiments, the resolver is a variable reluctance resolver, in which an excitation winding is disposed in the stator, and an airgap between the rotor and the stator is modulated on the rotor, which modulates the transformation ratio depending on the rotational position. The output signals from the secondary windings may be phase-shifted by 90 degrees of rotation with respect to each other as a result of the secondary windings being mechanically displaced by 90/PP degrees of mechanical rotation, wherein PP is the quantity of pole pairs of the resolver. Thus, electrical rotation is determined based upon mechanical rotation divided by a quantity of electrical pole pairs. The primary winding may be excited with a sine wave reference signal, which induces differential output signals on the secondary windings. The relationships between the resolver input and the differential output signals may be used to determine a sine and a cosine of the rotational angle of the rotor. Thus, the relationships between the resolver input signal and the resolver output signals may be analyzed to dynamically determine an angular position and rotational speed of the rotor, and thus the rotating member.
Known systems employing resolvers have resolver-to-digital conversion integrated circuit devices to process input signals from the resolver to generate rotational information that may be employed by a controller.
A resolver rotatably coupled to a rotatable member is described, including a method for evaluating an output signal therefrom. This includes supplying an excitation signal to the resolver and dynamically determining corresponding output signals from the resolver. A plurality of datasets are determined, with each dataset including digitized states of the excitation signal supplied to the resolver and corresponding output signals from the resolver. The digitized states of the excitation signal and the corresponding output signals from the resolver for each of the datasets are arithmetically combined, and a moving average thereof is determined. A phase shift error term is determined based upon the moving average, and a phase shift is determined between the excitation signal and the corresponding output signals based upon the phase shift error term.
The above features and advantages, and other features and advantages, of the present teachings are readily apparent from the following detailed description of some of the best modes and other embodiments for carrying out the present teachings, as defined in the appended claims, when taken in connection with the accompanying drawings.
One or more embodiments will now be described, by way of example, with reference to the accompanying drawings, in which:
Referring now to the drawings, wherein the depictions are for the purpose of illustrating certain exemplary embodiments only and not for the purpose of limiting the same,
The electric motor 10 may be any suitable electric motor/generator device, e.g., a permanent magnet device, and includes a stator 14 and a rotor 12. As shown, the stator 14 is an annular device and the rotor 12 is coaxially disposed within and coupled to the rotatable member 16. Alternatively, the rotor 12 may be configured as an annular device with a coaxial stator 14 disposed within. Operation of the electric motor 10 is controlled via the motor controller 40 that preferably includes an inverter 45 in signal communication with a controller 50 via a communication link 42. The inverter 45 electrically connects to the stator 14 of the electric motor 10 to transfer electric power, either to generate torque on the rotor 12 that is transferred to the rotatable member 16, or to react torque on the rotor 12 that is transferred from the rotatable member 16. The controller 50 communicates with the resolver 20 to monitor rotational position of the rotatable member 16.
The resolver 20 includes a resolver rotor 22 that fixedly attaches to the rotatable member 16, and a resolver stator 24 that attaches to a grounding element, e.g., a motor case. The resolver rotor 22 may include a primary electrical winding referred to herein as an excitation winding 23, and the resolver stator 24 includes two secondary electrical windings referred to herein as first and second secondary windings 25, 26, respectively. Alternatively, the resolver 20 may be a variable reluctance resolver having the excitation winding 23 and the first and second secondary windings 25, 26 disposed on the resolver stator 24, wherein the resolver rotor 22 modulates an airgap therebetween to generate output signals on the first and second secondary windings 25, 26.
The excitation winding 23 and the first and second secondary windings 25, 26 operate as variable coupling transformers. In operation, the controller 50 communicates an excitation signal, preferably in the form of an analog sinusoidal reference signal, to the excitation winding 23 via first lines 33. In certain embodiments, the sinusoidal reference signal has a frequency in a range between 1 kHz and 15 kHz. The first and second secondary windings 25, 26 generate first and second output signals in response to the excitation signal, which are communicated via second and third lines 35, 36. When the first and second secondary windings 25, 26 are mechanically rotatably displaced by 90/PP degrees of mechanical rotation, wherein PP is the quantity of pole pairs of the resolver about the axis of rotation of the rotor 12, the first and second output signals generated by the first and second secondary windings 25, 26 are subjected to signal processing that includes digitization and demodulation to determine a rotational angle of the rotor 12 and hence the rotatable member 16. The resolver 20 may be configured with a single pole pair for the first and second secondary windings 25, 26, meaning that 360 degrees of mechanical rotation of the rotatable member 16 generates a signal indicating 360 degrees of electrical rotation from the resolver rotor 22. Alternatively, the resolver 20 may be configured with multiple pole pairs for the first and second secondary windings 25, 26. By way of example, when the resolver 20 is configured with two pole pairs, 180 degrees of mechanical rotation of the rotatable member 16 generates a signal indicating 360 degrees of electrical rotation from the resolver rotor 22, and when the resolver 20 is configured with three pole pairs, 120 degrees of mechanical rotation of the rotatable member 16 generates a signal indicating 360 degrees of electrical rotation from the resolver rotor 22.
The controller 50 includes a microprocessor circuit 60 and an interface circuit 55. The microprocessor circuit 60 preferably includes a dual-core central processing unit (CPU) 65, a pulse generator 78 and a sigma-delta analog-to-digital converter (SDADC) 70 that communicate via an internal parallel communication bus 85. The interface circuit 55 includes signal conditioning circuitry including, e.g., a low-pass filter 54 and differential amplifier 53 that electrically connect via first lines 33 to the excitation winding 23 of the resolver 20. The first and second secondary windings 25, 26 of the resolver 20 communicate via second and third lines 35, 36, respectively, with input lines to the SDADC 70. The second and third lines 35, 36 include respective line filters 52. The pulse generator 78 generates an electrical pulse that is transferred to the excitation winding 23 of the resolver 20 via the signal conditioning circuitry including, e.g., a low-pass filter 54 and differential amplifier 53. The respective line filters 52 remove electromagnetic interference (EMI) noise before being sent to the SDADC 70. The controller 50 communicates with the inverter 45 via the communication link 42.
The excitation winding 23 and the two secondary windings of the first and second secondary windings 25, 26 may operate as variable coupling transformers. In operation, the controller 50 communicates an excitation signal, preferably in the form of an analog sinusoidal reference signal, to the excitation winding 23 via the first lines 33. In certain embodiments, the sinusoidal reference signal has a frequency in a range between 1 kHz and 15 kHz. The excitation signal may be generated by the pulse generator 78 in the form of a square wave reference signal, and passed through the low-pass filter 54 to form the sinusoidal waveform. The second and third lines 35, 36 communicate first and second output signals that are generated by the first and second secondary windings 25, 26 in response to the excitation signal. When the first and second secondary windings 25, 26 are mechanically rotatably displaced by 90/PP degrees of rotation about the axis of rotation of the rotor 12 (wherein PP is the quantity of pole pairs of the resolver), the first and second output signals generated by the first and second secondary windings 25, 26 may be subjected to signal processing that includes digitization and demodulation to determine a rotational angle of the rotor 12.
The motor controller 40 includes the microprocessor circuit 60 and other circuitries to sense the feedback signals such as motor current, input voltage, motor position and speed. The motor controller 40 generates the control signals for the power semiconductor switches of the inverter 45 to generate current that is transferred to the stator 14 via three-phase motor cables 15. The rotation of the rotatable member 16 coincides with the rotation of the rotor 12 and the resolver rotor 22, and the position and speed of the resolver rotor 22 are directly coupled with the position and speed of the rotor 12. As an example of a permanent magnet motor drive system, the resolver rotor 22 is mounted to locate the north pole of the magnet in the rotor 12, permitting the motor controller 40 to control the electric motor 10 in relation to the motor magnet location to maximize the output torque for a given current. Specifically absent from any mechanization of the motor controller 40 described with reference to
The dual-core central processing unit (CPU) 65 and elements such as controller, control module, module, control, control unit, processor and similar terms refer to any one or various combinations of Application Specific Integrated Circuit(s) (ASIC), electronic circuit(s), central processing unit(s), e.g., microprocessor(s) and associated non-transitory memory component in the form of memory and storage devices (read only, programmable read only, random access, hard drive, etc.). The non-transitory memory component is capable of storing machine readable instructions in the form of one or more software or firmware programs or routines, combinational logic circuit(s), input/output circuit(s) and devices, signal conditioning and buffer circuitry and other components that can be accessed by one or more processors to provide a described functionality. Input/output circuit(s) and devices include analog/digital converters and related devices that monitor inputs from sensors, with such inputs monitored at a preset sampling frequency or in response to a triggering event. Software, firmware, programs, instructions, control routines, code, algorithms and similar terms mean any controller-executable instruction sets including calibrations and look-up tables. Each controller executes control routine(s) to provide desired functions, including monitoring inputs from sensing devices and other networked controllers and executing control and diagnostic instructions to control operation of actuators. Routines may be executed at regular intervals, for example each 100 microseconds during ongoing operation. Alternatively, routines may be executed in response to occurrence of a triggering event. Communication between controllers, and communication between controllers, actuators and/or sensors may be accomplished using a direct wired link, a networked communication bus link, a wireless link or any another suitable communication link. Communication includes exchanging data signals in any suitable form, including, for example, electrical signals via a conductive medium, electromagnetic signals via air, optical signals via optical waveguides, and the like. Data signals may include analog, digitized analog, and discrete signals representing inputs from sensors, actuator commands, and communication between controllers. The term ‘model’ refers to a processor-based or processor-executable code and associated calibration that simulates a physical existence of a device or a physical process. As used herein, the terms ‘dynamic’ and ‘dynamically’ describe steps or processes that are executed in real-time and are characterized by monitoring or otherwise determining states of parameters and regularly or periodically updating the states of the parameters during execution of a routine or between iterations of execution of the routine.
A process for evaluating an output signal from an embodiment of the resolver 20 that monitors rotational position of the rotatable member 16 described herein with reference to
The phase shift can be compensated for by recursive control of the sinusoidal excitation signal, and the resultant first and second output signals from the resolver may be demodulated to extract rotational speed and position information for the rotatable member 16. The demodulated position information can then be used for purposes of diagnostics and control. As described herein, all of the resolver-to-digital conversion may be accomplished employing algorithms that analyze digitized states of signals collected from the first and second secondary windings 25, 26 via second and third lines 35, 36, respectively.
The sine and cosine signals of the rotational angle may be interpreted to determine a rotational angle of the resolver rotor 22, and hence a rotational angle of the rotatable member 16 and the rotor 12. The motor controller 40 may employ the rotational angle of the rotatable member 16 to control operation of the electric motor 10. It is appreciated that there may be a mechanical error difference between the rotational angle as measured by the resolver 20 and the rotational angle of the rotor 12 in relation to the stator 14 of the electric motor 10 due to resolver offset or mechanical twisting of the rotatable member 16 when torque is applied. Furthermore, there may be an electrical signal error difference between the rotational angle as measured by the resolver 20 and the rotational angle of the rotor 12 in relation to the stator 14 of the electric motor 10 due to signal latencies, such as signal filtering and communication delays.
The first and second output signals generated by the first and second secondary windings 25, 26 in response to the excitation signal and communicated on the second and third lines 35, 36 are analog signals. The analog signals may be converted to a digital signal indicating rotational position and speed of the rotatable member 16 employing the motor controller 40.
The first routine 400 employs the first and second output signals sine 435 and cosine 436 that are output from the secondary windings 25, 26, respectively of the resolver 20, as follows:
sin(θ)*sin(ωt+β) and
cos(θ)*sin(ωt+β),
wherein:
ω is the frequency of the excitation signal,
β is the resolver phase shift, and
θ is the position of the rotor at time t.
The sine 435 and cosine 436 signals are read from an input buffer of an analog/digital converter that communicates with the resolver controller 30, preferably at a known sampling rate. In one embodiment, and as shown, the sampling rate yields sixteen samples per excitation cycle. The input buffer preferably includes a plurality of datasets, wherein each of the datasets includes digitized states of the sinusoidal excitation signal supplied to the resolver 20 and time-correspondent first and second output signals from the resolver 20.
The sine and cosine values of the excitation signal 433 may be estimated from a lookup table, and expressed as follows:
sin(ωt+φ) and
cos(ωt+φ)
wherein:
ω is the frequency of the excitation signal, and
φ is the estimated phase shift correction.
During an initial execution of the first routine 400, the estimated phase shift correction φ may be set to zero, indicating that no phase shift correction has been estimated. One portion of the first routine 400 includes converging the estimated phase shift correction φ towards the resolver phase shift β during recursive executions so that the estimated excitation signal accurately accounts for the resolver phase shift for demodulation during resolver-to-digital conversion. In this embodiment, the sine 435 and cosine 436 from the resolver 20 and the sine and cosine signals from the estimated excitation signal 433 are employed.
A combining operation is executed, and includes arithmetically combining the digitized states of the excitation signal and the corresponding first and second output signals from the resolver 20 for each of the datasets. This includes calculating four products (410), as follows:
SinEnv=sin(θ)*sin(ωt+β)*sin(ωt+φ),
CosEnv=cos(θ)*sin(ωt+β)*sin(ωt+φ),
SinQuad=sin(θ)*sin(ωt+β)*cos(ωt+φ), and
CosQuad=cos(θ)*sin(ωt+β)*cos(ωt+φ).
By trigonometric manipulation, these signals may be equivalently written as follows:
SinEnv=sin(θ)*½[cos((β−φ)cos(2ωt+β+φ)],
CosEnv=cos(θ)*½[cos(β−φ)cos(2ωt+β+φ)],
SinQuad=sin(θ)*½[sin(2ωt+β+φ)+sin(β−φ)], and
CosQuad=cos(θ)*½[sin(2ωt+β+φ)+sin(β−φ)].
Products may be calculated as follows (420):
SinEnv*SinQuad=sin(θ)2*¼[cos(β−φ)*sin(2ωt+β+φ)+cos(β−φ)*sin(β−φ)−cos(2ωt+β+φ)*sin(2ωt+β+φ)−cos(2ωt+β+φ)*sin(β−φ)], and
CosEnv*CosQuad=cos(θ)2*¼[cos(β−φ)*sin(2ωt+β+φ)+cos(β−φ)*sin(β−φ)cos(2 ωt+β+φ)*sin(2ωt+β+φ)−cos(2ωt+β+φ)*sin(β−φ)],respectively.
When these two products are summed (425), the rotor position information is cancelled out by the identity:
sin(θ)2+cos(θ)2=1,
The remainder is as follows:
¼[cos(β−φ)*sin(2ωt+β+φ)+cos(β−φ)*sin(β−φ)−cos(2ωt+β+φ)*sin(2ωt+β+φ)−cos(2ωt+β+φ)*sin(β−φ)].
A moving average of the arithmetically combined digitized states of the excitation signal and the corresponding first and second output signals from the resolver for a single period of the sinusoidal excitation signal is calculated (430).
This includes initially neglecting the factor of ¼. The term cos(β−φ)*sin(2ωt+β+φ) cancels out because cos(β−φ) is a constant, and any constant multiple of sin(2ωt+β+φ) averages to zero over the excitation cycle. The term cos(β−φ)*sin(β−φ) is a constant and therefore leaves the moving average unchanged.
The term cos(2ωt+β+φ)*sin(2ωt+β+φ) can be trigonometrically manipulated to ½ sin(4ωt+2β+2φ) employing the identity sin(2u)=2*sin(u)*cos(u). The resultant cancels out because it averages to zero over the excitation cycle. The term cos(2ωt+β+φ)*sin(β−φ)] cancels out because sin(β−φ) is a constant, and any constant multiple of cos(2ωt+β+φ) averages to zero over the excitation. Therefore, after the moving average is calculated, what remains is ¼*cos(β−φ)*sin(β−φ).
Furthermore, the term ¼*cos(β−φ)*sin(β−φ) can be trigonometrically manipulated to ⅛ sin(2β−2φ) using the identity sin(2u)=2*sin(u)*cos(u).
Using small angle approximation, the following relationship can be derived:
⅛ sin(2β−2φ)≈¼(β−φ).
This relationship provides a term proportional to the error (β−φ) between the resolver phase shift β and the estimated phase shift correction φ after a gain term is applied (440). This error term is integrated (445) and added to the estimated phase shift correction φ, as part of the excitation phase 405 such that the estimated phase shift correction φ will converge on the resolver phase shift β over multiple iterations of the first routine 400 (450). Thus, a phase shift error term may be determined based upon the moving average in conjunction with other arithmetic operations and trigonometric manipulations, and a phase shift may be determined between the sinusoidal excitation signal and the time-correspondent output signals based upon the phase shift error term.
The second routine 500 employs raw sine and cosine signals that are output from the secondary windings 25, 26, respectively of the resolver 20 employing the same trigonometric manipulations as previously described in routine 400, but moving average calculations are performed (510) closer to the inputs. The second routine 500 approximates the sin(θ) and cos(θ) as constants over a single excitation cycle, due to the rotor speed being substantially slower than the excitation frequency. The products SinEnv, CosEnv, SinQuad, and CosQuad are calculated as described with reference to the first routine 400 (520), and then each of the four signals is passed through a moving average over the 16 samples per excitation cycle. The 2ωt terms in each signal are averaged to zero, using the approximation that sin(θ) and cos(θ) are constant over each excitation cycle. Then what remains of each signal is as follows:
SinEnv=sin(θ)*½*cos(β−φ),
CosEnv=cos(θ)*½*cos(β−φ),
SinQuad=sin(θ)*½*sin(β−φ), and
CosQuad=cos(θ)*½*sin(β−φ).
Next, the products are calculated (530) as follows:
SinEnv*SinQuad=sin(θ)2*¼*sin(β−φ)*cos(β−φ), and
CosEnv*CosQuad=cos(θ)2*¼*sin(β−φ)*cos(β−φ).
When these two products are summed (535), the rotor position information is cancelled out by the identity sin(θ)2+cos(θ)2=1, and what remains is ¼*sin(β−φ)*cos(β−φ). This can be trigonometrically manipulated to ⅛ sin(2β−2φ) using the identity sin(2u)=2*sin(u)*cos(u). Using the small angle approximation, ⅛ sin(2β−2φ)≈¼(β−φ). A term proportional to the error (β−φ) between the resolver phase shift β and the estimated phase shift correction φ is determined, and a gain term is applied (540).
This relationship provides a term proportional to the error (β−φ) between the resolver phase shift β and the estimated phase shift correction φ. This error term is integrated (545) and added to the estimated phase shift correction φ, as part of the excitation phase 505 such that the estimated phase shift correction φ will converge on the resolver phase shift β over multiple iterations of the second routine 500 (550). Thus, a phase shift error term may be determined based upon the moving averages in conjunction with other arithmetic operations and trigonometric manipulations, and a phase shift may be determined between the sinusoidal excitation signal and the corresponding output signals based upon the phase shift error term.
The third routine 600 employs the first output signal sine 635 from the secondary winding 25 of the resolver 20, as follows:
sin(θ)*sin(ωt+β)
wherein:
ω is the frequency of the excitation signal,
β is the resolver phase shift, and
θ is the position of the rotor at time t.
The sine 635 signal is read from an input buffer of an analog/digital converter that communicates with the resolver controller 30, preferably at a known sampling rate. In one embodiment, and as shown, the sampling rate yields sixteen samples per excitation cycle. The input buffer preferably includes a plurality of datasets, wherein each of the datasets includes digitized states of the sinusoidal excitation signal supplied to the resolver 20 and the time-correspondent first output signal from the resolver 20.
The sine and cosine values of the excitation signal 633 may be estimated from a lookup table, and expressed as follows:
sin(ωt+φ) and
cos(ωt+φ)
wherein:
ω is the frequency of the excitation signal, and
φ is the estimated phase shift correction.
During an initial execution of the third routine 600, the estimated phase shift correction φ may be set to zero, indicating that no phase shift correction has been estimated. One part of the routine is to have the estimated phase shift correction φ to converge on the resolver phase shift β during recursive executions of the third routine 600 so that the estimated excitation signal accurately accounts for the resolver phase shift in demodulation during resolver-to-digital conversion. In this embodiment, only the sine 635 from the resolver 20 and the sine and cosine signals from the estimated excitation signal 633 are employed.
SinEnv=sin(θ)*sin(ωt+β)*sin(ωt+φ) and
SinQuad=sin(θ)*sin(ωt+β)*cos(ωt+φ).
By trigonometric manipulation, these signals may be equivalently written as follows:
SinEnv=sin(θ)*½[cos(β−φ)cos(2ωt+β+φ)] and
SinQuad=sin(θ)½[sin(2ωt+β+φ)+sin(β−φ)].
From SinEnv and SinQuad, two derived signals SinNum and SinDenom are calculated:
SinNum=SinEnv*SinQuad=sin(θ)2*¼[cos(β−φ)*sin(2ωt+β+φ)+sin(β−φ)*cos(β−φ)sin(2ωt+β+φ)*cos(2ωt+β+φ)−sin(β−φ)*cos(2ωt+β+φ)]; and
SinDenom=SinEnv2+SinQuad2=sin(θ)2*¼[cos(β−φ)2−2*cos(β−φ)*cos(2ωt+β−φ)+cos(2ωt+β−φ)2+sin(2ωt+β−φ)2+2*sin(β−φ)*sin(2ωt+β+φ)+sin(β−φ)2].
The signal SinDenom can be further reduced as follows:
sin(θ)2*¼[2−2*cos(β−φ)*cos(2ωt+β−φ)+2*sin(β−φ)*sin(2ωt+β+φ)]
Next, SinNum and SinDenom are passed through a moving average over the 16 samples per excitation cycle (630). The 2ωt terms in each signal are averaged to zero, using the assumption that sin(θ) is approximately constant over an excitation cycle. What remains of each signal is as follows:
SinNum=sin(θ)2*¼*sin(β−φ)*cos(β−φ) and
SinDenom=sin(θ)2*¼*2=sin(θ)2*½.
The SinNum term is divided by SinDenom in order to eliminate sin(θ)2 This operation can only be done when sin(θ)2≠0.
The resulting signal is ½*sin(β−φ)*cos(β−φ), which becomes ¼ sin(2β−2φ) when using the identity sin(2u)=2*sin(u)*cos(u). The term ¼ sin(2β−2φ) is approximated as follows:
¼ sin(2β−2φ)≈½(β−φ)
using small angle approximation, and a gain term is applied (640).
This relationship provides a term proportional to the error (β−φ) between the resolver phase shift and the estimated phase shift correction φ. This error term is integrated (645) and added to the estimated phase shift correction φ, as part of the excitation phase 605 such that the estimated phase shift correction φ will converge on the resolver phase shift β over multiple iterations of the third routine 600 (650). Thus, a phase shift error term may be determined based upon the moving averages in conjunction with other arithmetic operations and trigonometric manipulations, and a phase shift may be determined between the sinusoidal excitation signal and the corresponding output signals based upon the phase shift error term.
This method uses sine from the resolver 20 as well as both the sine and cosine of the estimated excitation. It employs the same trigonometric manipulations as described with reference to the third routine 600, but moving averages are performed closer to the inputs. Since only sine (and not cosine) is used in this method, it is immune to any amplitude imbalance between sine and cos. Like the third routine 600, the fourth routine 700 approximates the sin(θ) as a constant over a single excitation cycle, due to the rotor speed being substantially slower than the excitation frequency. The products SinEnv and SinQuad are calculated (710) as described with reference to the third routine 600, and then both signals are passed through a moving average over the 16 samples per excitation cycle (720, 725). The 2ωt terms in each signal are averaged to zero, using the assumption that sin(θ) is approximately constant over an excitation cycle (730). Then what remains of each signal is:
SinEnv=sin(θ)*½*cos(β−φ) and
SinQuad=sin(θ)*½*sin(β−φ).
From SinEnv and SinQuad, two derived signals SinNum and SinDenom are calculated as follows:
SinNum=SinEnv*SinQuad=sin(θ)2*¼*sin(β−φ)*cos(β−φ) and
SinDenom=SinEnv2+SinQuad2=sin(θ)2*¼*cos(β−φ)2+sin(θ)2*¼*sin(β−φ)2=sin(θ)2*¼*[sin(β−φ)2+cos(β−φ)2].
The term SinDenom can be further reduced to sin(θ)2*¼ using the identity sin(u)2+cos(u)2=1 on the set of squared terms located inside the brackets. Finally, SinNum is divided by SinDenom in order to eliminate sin(θ)2, which can only be done when sin(θ)2≠0. The resulting signal is sin(β−φ)*cos(β−φ) which, using the identity sin(2u)=2*sin(u)*cos(u), becomes ½ sin(2β−2φ). Using the small angle approximation, ½ sin(2β−2φ)≈(β−φ), and a gain term is applied (740).
This relationship provides a term proportional to the error (β−φ) between the resolver phase shift β and the estimated phase shift correction φ. This error term is integrated (745) and added to the estimated phase shift correction φ, as part of the excitation phase 705 such that the estimated phase shift correction φ will converge on the resolver phase shift β over multiple iterations of the fourth routine 700 (750). Thus, a phase shift error term may be determined based upon the moving averages in conjunction with other arithmetic operations and trigonometric manipulations, and a phase shift may be determined between the sinusoidal excitation signal and the corresponding output signals based upon the phase shift error term.
The fifth routine 800 employs the first output signal cosine 836 from the secondary winding 25 of the resolver 20, as follows:
cos(θ)*sin(ωt+β)
wherein:
ω is the frequency of the excitation signal,
β is the resolver phase shift, and
θ is the position of the rotor at time t.
The cosine 836 signal is read from an input buffer of an analog/digital converter that communicates with the controller 50, preferably at a known sampling rate. In one embodiment, and as shown, the sampling rate yields sixteen samples per excitation cycle. The input buffer preferably includes a plurality of datasets, wherein each of the datasets includes digitized states of the sinusoidal excitation signal supplied to the resolver 20 and corresponding second output signal from the resolver 20.
The sine and cosine values of the excitation signal 833 may be estimated from a lookup table, and expressed as follows:
sin(ωt+φ) and
cos(ωt+φ)
wherein:
ω is the frequency of the excitation signal, and
φ is the estimated phase shift correction.
During an initial execution of the fifth routine 800, the estimated phase shift correction φ may be set to zero, indicating that no phase shift correction has been estimated. One part of the routine is to have the estimated phase shift correction φ to converge on the resolver phase shift β during recursive executions of the fifth routine 800 so that the estimated excitation signal accurately accounts for the resolver phase shift in demodulation during resolver-to-digital conversion. In this embodiment, only the cosine 836 from the resolver 20 and the sine and cosine signals from the estimated excitation signal 833 are employed.
CosEnv=cos(θ)*sin(ωt+β)*sin(ωt+φ) and
CosQuad=cos(θ)*sin(ωt+β)*cos(ωt+φ).
By trigonometric manipulation, these signals may be equivalently written as follows:
CosEnv=cos(θ)*½[cos(β−φ)cos(2ωt+β+φ)] and
CosQuad=cos(θ)*½[sin(2ωt+β+φ)+sin(β−φ)].
From CosEnv and CosQuad, two derived signals CosNum and CosDenom are calculated:
CosNum=CosEnv*CosQuad=cos(θ)2*¼[cos(β−φ)*sin(2ωt+β+φ)+cos(β−φ)*sin(β−φ)−sin(2ωt+β+φ)*cos(2ωt+β+φ)−sin(β−φ)*cos(2ωt+β+φ)]; and
CosDenom=CosEnv2+CosQuad2=cos(θ)2*¼[cos(β−φ)2−2*cos(β−φ)*cos(2ωt+β−φ)+cos(2ωt+β−φ)2+sin(2ωt+β−φ)2+2*sin(β−φ)*sin(2ωt+β+φ)+sin(β−φ)2].
The signal CosDenom can be further reduced as follows:
cos(θ)2*¼[2+2*sin(β−φ)*sin(2ωt+β−φ)−2*cos(β−φ)*cos(2ωt+β+φ)]
Next, CosNum and CosDenom are passed through a moving average over the 16 samples per excitation cycle (830). The 2ωt terms in each signal are averaged to zero, using the assumption that cos(θ) is approximately constant over an excitation cycle. Then what remains of each signal is as follows:
CosNum=cos(θ)2*¼*cos(β−φ)*sin(β−φ) and
CosDenom=cos(θ)2*¼*2=cos(θ)2*½.
The CosNum term is divided by CosDenom in order to eliminate cos(θ)2 (this can only be done when cos(θ)2≠0).
The resulting signal is ½*cos(β−φ)*sin(β−φ), which becomes ¼ sin(2β−2φ) when using the identity sin(2u)=2*cos(u)*sin(u). The term ¼ sin(2β−2φ) is approximated as follows:
¼ sin(2β−2φ)≈½(β−φ)
using small angle approximation, and a gain term is applied (540).
This relationship provides a term proportional to the error (β−φ) between the resolver phase shift β and the estimated phase shift correction φ. This error term is integrated (845) and added to the estimated phase shift correction φ, as part of the excitation phase 805 such that the estimated phase shift correction φ will converge on the resolver phase shift β over multiple iterations of the fifth routine 800 (850). Thus, a phase shift error term may be determined based upon the moving averages in conjunction with other arithmetic operations and trigonometric manipulations, and a phase shift may be determined between the sinusoidal excitation signal and the corresponding output signals based upon the phase shift error term.
This method uses cosine 936 from the resolver 20 as well as both the sine and cosine of the estimated excitation signal 933. It employs the same trigonometric manipulations as described with reference to the fifth routine 800, but moving averages are performed closer to the inputs. Since only cosine (and not sine) is used in this method, it is immune to any amplitude imbalance between sine and cos. Like the fifth routine 800, the sixth routine 900 approximates the cos(θ) as a constant over a single excitation cycle, due to the rotor speed being substantially slower than the excitation frequency. The products CosEnv and CosQuad are calculated (910) as described with reference to the fifth routine 800, and then both signals are passed through a moving average over the 16 samples per excitation cycle (920, 925). The 2ωt terms in each signal are averaged to zero, using the assumption that cos(θ) is approximately constant over an excitation cycle (930). Then what remains of each signal is as follows:
CosEnv=cos(θ)*½*cos(β−φ) and
CosQuad=cos(θ)*½*sin(β−φ).
From CosEnv and CosQuad, two derived signals CosNum and CosDenom are calculated as follows:
CosNum=CosEnv*CosQuad=cos(θ)2*¼*sin(β−φ)*cos(β−φ) and CosDenom=CosEnv2+CosQuad2=cos(θ)2*¼*sin(β−φ)2+cos(θ)2*¼*cos(β−φ)2=cos(θ)2*¼[sin(β−φ)2+cos(β−φ)2].
The term CosDenom can be further reduced to cos(θ)2*¼ using the identity sin(u)2+cos(u)2=1 on the set of squared terms located inside the brackets. Finally, CosNum is divided by CosDenom in order to eliminate cos(θ)2, which can only be done when cos(θ)2≠0. The resulting signal is sin(β−φ)*cos(β−φ) which, using the identity sin(2u)=2*cos(u)*cos(u), becomes ½ sin(2β−2φ). Using the small angle approximation, ½ sin(2β−2φ)≈(β−φ), and a gain term is applied (940).
This relationship provides a term proportional to the error (β−φ) between the resolver phase shift β and the estimated phase shift correction φ. This error term is integrated (945) and added to the estimated phase shift correction φ, as part of the excitation phase 905 such that the estimated phase shift correction φ will converge on the resolver phase shift β over multiple iterations of the sixth routine 900 (950). Thus, a phase shift error term may be determined based upon the moving averages in conjunction with other arithmetic operations and trigonometric manipulations, and a phase shift may be determined between the sinusoidal excitation signal and the corresponding second output signal based upon the phase shift error term.
The routines described herein provide an accurate, signed estimate of the phase shift β, which may be applied to a synthesized excitation signal to enable accurate demodulation and subsequent extraction of speed and position information for demodulation in a software resolver-to-digital (RDC) application. The development and enablement of an accurate software RDC application eliminates a need to employ a specialized integrated circuit in the form of an RDC chip in the motor controller 40.
The flowchart and block diagrams in the flow diagrams illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It will also be noted that each block of the block diagrams and/or flowchart illustrations, and combinations of blocks in the block diagrams and/or flowchart illustrations, may be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions. These computer program instructions may also be stored in a computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The detailed description and the drawings or figures are supportive and descriptive of the present teachings, but the scope of the present teachings is defined solely by the claims. While some of the best modes and other embodiments for carrying out the present teachings have been described in detail, various alternative designs and embodiments exist for practicing the present teachings defined in the appended claims.