Field orientation control with sector determination

By using the feedback of the BEMF signal in the FOC control circuit, the rotor position and speed of the permanent magnet motor are inferred and the appropriate control current vector is determined, the problem of degradation of the permanent magnet motor performance at low rotor speed is solved, and higher control accuracy and efficiency are achieved.

CN119945229APending Publication Date: 2025-05-06TEXAS INSTRUMENTS INC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202411519065.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-03-25
Filing Date
2024-10-29
Publication Date
2025-05-06

AI Technical Summary

Technical Problem

At low rotor speeds, the performance of permanent magnet motors using field directional control (FOC) is affected by the low signal-to-noise ratio (SNR) of the reverse electromagnetic force (BEMF) signal generated by the permanent magnet motor, resulting in a decrease in control accuracy and efficiency.

Method used

The rotor position and speed of the motor are inferred by using feedback signals, especially the measurements of the BEMF waveform in the FOC control circuit, and the appropriate control current vector is determined through components such as PI speed regulators and sliding mode position estimators to achieve effective rotor control.

Benefits of technology

It improves the control accuracy and efficiency of permanent magnet motors at low rotor speeds, reduces dependence on sensors, and reduces system complexity and power consumption.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119945229A_ABST
    Figure CN119945229A_ABST
Patent Text Reader

Abstract

The invention relates to field orientation control with sector determination. In described examples, an apparatus includes a non-transitory memory and a processor. The memory stores a first instruction. The processor receives the first instruction from the memory. Executing the first instruction causes the processor to perform the following actions. The processor receives a position vector corresponding to a sum of a first component in a first dimension and a second component in a second dimension (902). The processor compares a magnitude of the first component to a magnitude of the second component, and compares the first component or the second component to zero (910). And, in response to the comparison action and a sector layout, the processor determines a sector in which the location vector is located (912). In some examples, execution of additional instructions causes the processor to operate the rotation system in response to the determined sector.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims the benefit of and priority to U.S. Provisional Application No. 63 / 546,860, filed on November 1, 2023, which is incorporated herein by reference. Technical Field

[0003] The present application relates generally to field oriented control (FOC), for example, for electric machines, and more particularly to using FOC to determine control vectors for rotating systems. Background Art

[0004] In some examples, the motor is a permanent magnet motor or an induction motor. In some examples, a permanent magnet motor or an induction motor includes a fixed stator that rotates a movable rotor. For a permanent magnet motor, the rotor includes a plurality of magnets embedded in or connected to the rotor. For an induction motor, the rotor includes a plurality of conductive windings embedded in or connected to the rotor. The stator includes a plurality of conductive windings. Electrical signals passing through the windings generate a rotating magnetic field that interacts with the magnets or conductive windings of the rotor, thereby rotating the rotor. Controlling changes in the electrical signal controls the stator rotating magnetic field, and thus controls the rotation of the rotor.

[0005] In some examples, FOC control of an alternating current (AC) motor is sensorless. In some examples, sensorless motor control avoids the use of separate speed and position sensors mechanically attached to the motor. Sensors directly attached to the motor may adversely affect the performance of the motor, for example by reducing the maximum torque output per unit volume and drive system reliability. Sensorless motor control can be performed by mathematically deriving one or more characteristics of the motor (e.g., motor speed and rotor position) based on feedback from the motor itself. Additional disclosure about FOC control of motor systems can be found in U.S. Pat. No. 10,666,180, which is incorporated herein by reference. Summary of the invention

[0006] In the described example, a device includes a non-transitory memory and a processor. The memory stores a first instruction. The processor receives the first instruction from the memory. Execution of the first instruction causes the processor to perform the following actions. The processor receives a position vector corresponding to the sum of a first component in a first dimension and a second component in a second dimension. The processor compares the magnitude of the first component with the magnitude of the second component, and compares the first component or the second component with zero. And, the processor determines the sector in which the position vector is located in response to the comparison action and the sector layout. In some examples, execution of additional instructions causes the processor to operate a rotation system in response to the determined sector. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] Figure 1 It is a controlled system where an integrated circuit (IC) controls the rotation system.

[0008] Figure 2 is a functional block diagram of an example permanent magnet motor system with FOC control circuit and rotating system.

[0009] Figure 3 A diagram illustrating an example sector layout within the rotor position vector space with example position vectors for a permanent magnet motor and Figure 2 Example control vector signals for a PWM controller.

[0010] Figure 4 For illustration Figure 3 A graph of an alternative example sector layout within the rotor position vector space.

[0011] Figure 5 is a diagram illustrating a process for determining the sector in which a position vector is located.

[0012] Fig. 6A for Figure 3 A first graphic of example position vectors within a sector layout.

[0013] Figure 6B is rescaled to Figure 4 A second graph of example position vectors forming rescaled position vectors within the sector layout of .

[0014] Figure 7 For use Figure 2 An example control system for a three-phase inverter.

[0015] Figure 8 is the procedure for determining the inverse tangent of a position vector.

[0016] Fig. 9 is a process for determining the sector corresponding to a position vector. DETAILED DESCRIPTION

[0017] In some instances, as described in detail later (e.g., with respect to Figure 2In a permanent magnet motor system 200, a FOC control circuit 202 controlling a permanent magnet motor 208 uses a measured value of a back electromagnetic force (BEMF) waveform induced by the permanent magnet motor 208 to generate a feedback signal as part of a control function. The BEMF is generated by the field interaction between the rotor magnets and the stator windings of the permanent magnet motor 208. In some examples, the feedback signal generated using the BEMF waveform measurement includes a rotor position estimate and a rotor speed estimate. In some examples, these estimates are determined relative to a reference position of the rotor. References to position herein are relative to a reference position.

[0018] In some examples, the rotor position estimate and the rotor speed estimate are used to generate orthogonal components of a two-dimensional voltage vector, e.g., x and y components. This voltage vector corresponds to the position vector of the rotor. In some examples, the coordinate space in which the position of the rotor is represented is divided into several sectors. The sector number identifying the sector may also be referred to as an index. The sector (or index) number refers to a position or position range in a vector space, e.g., an angular space within a circular travel track of a motor. The x and y components of the position vector can be used to determine in which sector the rotor is located.

[0019] More about Figures 3 to 6B 8 describe sector determination. In some examples, IC hardware and systems under its control may be improved (e.g., accelerated), for example, in combination with assembly (or other) language instructions for accelerating sector determination. Such hardware and / or instructions may also be used to accelerate the determination of the arctangent per unit of a full circle, as described with respect to Figure 4 and 9 In some examples, the per-unit arctangent determination is used in a control loop of a rotating system, such as permanent magnet motor system 200 .

[0020] FOC sets the current vector to control the motor so that a rotational flux is generated in the motor to apply the desired torque, effectively controlling the rotor to spin at a speed corresponding to the rotor speed input. The x and y components of the position vector with the determined sector can be used to determine the current vector to effectively control the motor.

[0021] In some examples, rescaling of the position vector may be used to achieve one or more performance improvements, including fast, low power, low processing cost determination of the sector the rotor is located in. This enables fast, efficient updating of the control vector. In some examples, this improves the efficiency and / or accuracy of rotor control.

[0022] In some examples, similar systems and processes described herein with respect to permanent magnet motors are also applicable to induction motors and other rotating systems.

[0023] Herein, current signals are named I-subscript-[name], and voltage signals are named V-subscript-[name]. For signals in the DQ coordinate system, the D-axis signal contains D in its name, and the Q-axis signal contains Q in its name. Similarly, for signals in the αβγ (α-β-γ) coordinate system, the α-axis signal contains α in its name, and the β-axis signal contains β in its name. Moreover, the same reference numerals or other reference designators are used in the drawings to indicate features that are structurally and / or functionally related.

[0024] Figure 1 1 is a controlled system 100 in which an IC 102 controls a rotating system 104. The IC 102 includes a processor 106, a memory 108, and a clock generator 110 fabricated on the IC 102. The processor 106 includes a FOC control circuit 202. The processor 106 is communicatively connected to the memory 108. The processor 106 and the memory 108 are connected to be timed by the clock generator 110. The processor 106 is connected to control the rotating system 104 and receive feedback from the rotating system 104, such as a BEMF signal.

[0025] Figure 2 2 is a functional block diagram of an example permanent magnet motor system 200 having a FOC control circuit 202 and a rotating system 104. Although the present disclosure describes the system 200 as including a permanent magnet motor, certain techniques of the present disclosure may be implemented with other types of motors (e.g., induction motors or synchronous motors) or other types of rotating systems (e.g., direct current to alternating current (DC-AC) converters). In some examples, the DC-AC converter is used in a solar inverter. The rotating system 104 includes a DC power supply 204, a three-phase inverter 206, and a permanent magnet motor 208.

[0026] The FOC control circuit 202 includes a proportional integral (PI) speed regulator 210, a PI Q Regulator 212, PI I D regulator 214, inverse Pike transform circuit 216, space vector generator 218, pulse width modulation (PWM) controller 220, sensor / analog-to-digital (ADC) circuit 222, Clarke transform circuit 224, phase voltage reconstruction circuit 226, Pike transform circuit 228, sliding mode position estimator 230, speed estimator 232, and ramp circuit 234. In some examples, FOC control circuit 202 can be used to control a permanent magnet motor in a vehicle (e.g., an electric vehicle, an electric scooter, or a bicycle), an HVAC (heating, ventilation, and air conditioning) system, a pump, an actuator, a compressor, or a robot.

[0027] In some examples, the performance of the permanent magnet motor 208 using FOC control is degraded at low rotor speeds due to the low signal-to-noise (SNR) ratio of the BEMF signal generated by the permanent magnet motor 208. The low SNR BEMF signal degradation depends on the accuracy of the angular velocity and position estimates of the BEMF waveform measurements. Therefore, in some examples, at low rotor speeds, the permanent magnet motor 208 is controlled using the open loop (no feedback) functionality of the FOC control circuit 202. The open loop control relies on the commanded rotor position and the external rotor speed input to determine the current vector applied to control the permanent magnet motor 208. The commanded rotor position is the angle at which the stator applies force to the rotor and can be referred to as the force angle.

[0028] Once the rotor reaches the speed threshold, the FOC control circuit 202 switches to closed-loop (feedback-dependent) operation. In closed-loop mode, the FOC control circuit 202 uses the rotor speed input along with the estimated rotor position (e.g., estimated angular position) and the estimated speed feedback signal to determine the current vector applied to control the permanent magnet motor 208. The estimated rotor position is the angle of the rotor determined using a sliding mode observer. The sliding mode observer operates using the sliding mode control concept. Sliding mode control is a nonlinear control method that uses a set-valued control signal to "slide" the system along a section of the normal behavior of the system. In some instances, another type of observer (e.g., a Luenberger observer) is used to determine the estimated rotor position and the estimated speed.

[0029] The PI speed regulator 210 receives a speed reference signal (Speed ​​Ref) at a first input for setting the speed of the permanent magnet motor 208. A second input of the PI speed regulator 210 is connected to the output of the speed estimator 232 to receive a speed estimation signal (Speed ​​Estimate) as a feedback value. The Speed ​​Estimate signal represents an estimated feedback identifying the actual speed of the permanent magnet motor 208. If the permanent magnet motor system 200 is in open loop mode (also referred to herein as open loop operation), ... Q The first input of the regulator 212 is switchably connected to receive I at the first input. SQ Reference (I SQ Ref). The open loop mode is used, for example, during startup of the permanent magnet motor 208, and as described above, during relatively low speed operation. When the permanent magnet motor system 200 is in the closed loop mode (also referred to herein as closed loop operation), PI I Q A first input of the regulator 212 is switchably connected to the output of the PI speed regulator 210. The closed loop mode is used after the PM motor 208 is spinning at a rate sufficient to enable the estimated speed and estimated position (rotor angle or θ (theta)) to be accurately used to control the three-phase power provided to the PM motor 208. QThe second input of the regulator 212 is connected to the first output of the Parker transformation circuit 228 to receive I SQ .

[0030] PI I D The first input of the regulator 214 receives I SD Reference (I SD Ref).PI I D A second input of the regulator 214 is connected to a second output of the Parker transform circuit 228 to receive I SD .

[0031] The first input of the inverse Pike transform circuit 216 is connected to the PI I Q The output of the regulator 212 receives V SQRef The second input of the inverse Pike transform circuit 216 is connected to PI I D The output of the regulator 214 receives V SDRef A third input of the inverse Pike transform circuit 216 is connected to the output of the ramp circuit 234 to receive the velocity ramp signal used during open loop operation. A fourth input of the inverse Pike transform circuit 216 is connected to the output of the sliding mode position estimator 230 to receive the θ signal used during closed loop operation.

[0032] The first input of the space vector generator 218 is connected to the first output of the inverse Pike transform circuit 216 to receive V SαRef The second input of the space vector generator 218 is connected to the second output of the inverse Pike transform circuit 216 to receive V SβRef . V SαRef The α-dimensional component corresponding to the position of the rotor, referred to herein as Ualpha or Uα, therefore corresponds to the Uα vector which can be described as lying on the α-axis. SβRef The β-dimensional component corresponding to the position of the rotor referred to herein as Ubeta or Uβ, therefore, corresponds to the Uβ vector which can be described as lying on the β-axis.

[0033] The first input, the second input and the third input of the PWM controller 220 are connected to the first output, the second output and the third output of the space vector generator 218, respectively, to receive the T a , T b and T c Voltage vector signal. T a , T b and T c It is used to determine the duty cycle of the signal generated by the PWM controller 220. Uα and Uβ are used to determine T a , T b and T c , such as about Figure 3 and subsequent figures for further description.

[0034] The power input and ground input of the three-phase inverter 206 are connected to the power output and ground output of the DC power supply 204, respectively. The first control input, the second control input and the third control input of the three-phase inverter 206 are connected to the first output, the second output and the third output of the PWM controller 220 to receive the PWM control signals PWM1 A / B, PWM2A / B and PWM3 A / B. In some examples, the control input of the PWM controller 220 is each input pair (for A and B signals), and the output of the PWM controller 220 is similarly an output pair. In response to the PWM control signal received from the PWM controller 220, the three-phase inverter 206 converts the DC power received from the DC power supply 204 into three-phase AC power. The first phase control input, the second phase control input and the third phase control input of the permanent magnet motor 208 are connected to the first phase output, the second phase output and the third phase output of the three-phase inverter 206, respectively.

[0035] In some examples, the permanent magnet motor 208 includes a rotor having permanent magnets embedded in or connected to the rotor. The permanent magnet motor 208 also includes, for example, a stator having a plurality of teeth around which conductive windings are wound. Based on signals from the three-phase inverter 206, the windings are selectively energized and de-energized to generate a rotating magnetic field to which the rotor magnets respond, thereby causing the rotor to rotate. As further described below, the permanent magnet motor 208 generates a BEMF waveform. The sensor / ADC circuit 222 measures this BEMF waveform as part of generating a feedback signal for controlling the permanent magnet motor system 200.

[0036] The first input, the second input, and the third input of the Clarke transform circuit 224 are connected to the first output, the second output, and the third output of the sensor / ADC circuit 222 to receive the I Sa ,I Sb and I sc The first input, the second input and the third input of the phase voltage reconstruction circuit 226 are connected to the first output, the second output and the third output of the space vector generator 218 to receive T a , T b and T c The fourth input of the phase voltage reconstruction circuit 226 is connected to the fourth output of the sensor / ADC circuit 222 to receive V DC . V DC is the DC bus voltage, ie, the voltage of the DC power supply 204 .

[0037] The first input and the second input of the sliding mode position estimator 230 are connected to the first output and the second output of the phase voltage reconstruction circuit 226 to receive V Sα and V SβThe third and fourth inputs of the sliding mode position estimator 230 are connected to the first and second outputs of the Clarke transform circuit 224 to receive I Sα and I Sβ The first input and the second input of the Parker transform circuit 228 are connected to the first output and the second output of the Clarke transform circuit 224 to receive I Sα and I Sβ A third input of the Parker transform circuit 228 is connected to the output of the ramp circuit 234 to receive the speed ramp signal. A fourth input of the Parker transform circuit 228 is connected to the output of the sliding mode position estimator 230 to receive the θ signal. An input of the speed estimator 232 is connected to the output of the sliding mode position estimator 230 to receive the θ signal.

[0038] By generating I for the D and Q axes respectively D and I Q The current command is used to control the permanent magnet motor 208. D The current command is used to control the magnetizing flux of the motor, while I Q The current commands are used to control the motor torque. These current commands are then converted into V for the D and Q axes respectively. D and V Q Voltage command. V D and V Q The voltage commands define voltage vectors used to generate three-phase voltages for the permanent magnet motor 208 .

[0039] The PI speed regulator 210 includes a combiner and a speed controller. As described above, the PI speed regulator 210 receives the command speed as a speed reference signal and a speed estimate signal. As previously mentioned, the speed estimate signal feeds back an estimate of the actual speed of the permanent magnet motor 208. The PI speed regulator 210 generates the difference between the speed reference signal and the speed estimate signal, which is a speed error signal. The PI speed regulator 210 uses the speed error signal to generate a corrective current command for the motor in order to reduce the speed error signal.

[0040] PI I Q The regulator 212 includes a combiner and a regulator. SQ It is a feedback signal representing the measured value of the actual current in the Q axis. Q The regulator 212 generates the current command or I provided by the PI speed regulator 210 SQ Reference (depending on whether the permanent magnet motor system 200 is in open loop mode or closed loop mode) and I SQ The difference between (as error signal). PI I Q The regulator 212 uses this error signal to generate a voltage command V for the motor. SQRef .

[0041] PI I D The regulator 214 includes a combiner and a regulator. SD It is a feedback signal representing the measured value of the actual current in the D axis. D Regulator 214 generates I SD Ref and I SD The difference between them is used as the error signal. D The regulator 214 uses this error signal to generate a voltage command V for the motor. SDRef .

[0042] Inverse Parker conversion circuit 216 uses V SQRef 、V SDRef and theta signal or speed ramp signal (depending on the operating mode) to convert the time-invariant V SQRef and V SDRef signal into a time-dependent V SαRef and V SβRef The space vector generator 218 uses V representing the two-phase voltage vector SαRef and V SβRef Signal to generate three-phase voltage signal T a , T b and T c These three-phase voltage signals define the voltages that will be applied to the "A", "B", and "C" windings of the stator during the three phases of the permanent magnet motor 208. The PWM controller 220 converts the three-phase voltage signals T a , T b and T c The PWM signals are converted into PWM signals PWM1 A / B, PWM2 A / B and PWM3 A / B for driving transistor switches in the three-phase inverter 206 .

[0043] The FOC control circuit 202 uses sensorless FOC to control the permanent magnet motor 208. That is, the FOC control circuit 202 does not receive sensor measurements from sensors mounted in or on the permanent magnet motor 208. Instead, the FOC control circuit 202 uses the BEMF waveform to infer one or more characteristics of the permanent magnet motor 208, such as the rotor speed or the rotor position. The BEMF waveform sensed by the sensor / ADC circuit 222 depends on the position and speed of the rotor. The BEMF waveform is caused by the periodic variation of the magnetic flux on the rotor. The magnetic flux is induced on the rotor by the movement of the rotor magnets relative to the energized windings of the stator. The sensor / ADC circuit 222 uses both voltage and current information to obtain the BEMF waveform.

[0044] The permanent magnet motor 208 is a three-phase time-dependent and speed-dependent system. Therefore, the signal corresponding to the measured BEMF provided by the sensor / ADC circuit 222 represents data in a three-phase time-dependent and speed-dependent coordinate system. This coordinate system can be transformed via projection into a two-coordinate time-invariant synchronous system.

[0045] Clarke transform circuit 224 transforms the time-dependent three-phase (three-dimensional) signal I Sa ,I Sb and I Sc Transformed into a time-dependent two-phase (two-dimensional) signal I Sα and I Sβ The Parker transformation circuit 228 uses the θ signal or the speed ramp signal (depending on the operating mode of the permanent magnet motor system 200) to transform the time-dependent two-phase signal I Sα and I Sβ The output of the Parker transform circuit 228 is converted into a non-time-varying two-phase signal. SQ and I SD The two coordinate axes of the downstream signal (until the inverse Pike transform circuit 216) are called D and Q axes. The phase voltage reconstruction circuit 226 uses the T a , T b and T c The output phase voltage is determined by the PWM duty cycle information provided and the DC voltage information measured by the sensor / ADC circuit 222. The output phase voltage is the voltage between the line and the neutral line from the three-phase inverter 206 to the permanent magnet motor 208. The output phase voltage is provided by the phase voltage reconstruction circuit 226 as two phase voltage information (V Sα and V Sβ ).

[0046] The sliding mode position estimator 230 and the speed estimator 232 use cascaded observer-based estimation algorithms to identify the position and speed estimates of the permanent magnet motor 208, respectively, including in a noisy environment. The sliding mode position estimator 230 uses two phase voltage information (V Sα and V Sβ ) and the two phase current information (I Sα and I Sβ ) to determine the estimated rotor angular position θ. The speed estimator 232 uses the resulting θ signal to estimate the rate of change of the rotor's angular position.

[0047] Figure 3 To illustrate a first diagram of an example sector layout 300 in rotor position vector space, there is an example position vector 301 for a permanent magnet motor 208 and a Figure 2 Example control vector signal of the PWM controller 220. Position vector (U POS)301 is represented by the orthogonal components Uα302 and Uβ304, and the control vector signal corresponds to the three-phase voltage signal T a 306, T b 308 and T c 310. The Uα 302 vector is aligned with the α axis 312, and the Uβ 304 vector is aligned with the β axis 314. T is determined in response to the Uα 302 vector and the Uβ 304 vector. a 306, T b 308 and T c 310 Vector.

[0048] The alpha axis 312 and the beta axis 314 together describe a vector space within which the estimated position of the rotor and the vector representing the control vector signal can be represented. A first line 316 (also referred to herein as a 60° (60 degree) line 316) indicates 60° and 240° from the alpha axis 312. A second line 318 (also referred to herein as a 120° line 318) indicates 120° and 300° from the alpha axis 312.

[0049] The alpha axis 312, the 60° line 316, and the 120° line 318 may be used together to define six sectors within which the position vector 301 of the rotor may be located, which is represented by the Uα component vector 302 and the Uβ component vector 304. These are the first sector 320 (sector 1), the second sector (sector 2) 322, the third sector (sector 3) 324, the fourth sector (sector 4) 326, the fifth sector (sector 5) 328, and the sixth sector (sector 6) 330. The first sector 320 is located between 0° and 60°, the second sector 322 is located between 60° and 120°, the third sector 324 is located between 120° and 180°, the fourth sector 326 is located between 180° and 240°, the fifth sector 328 is located between 240° and 300°, and the sixth sector 330 is located between 300° and 0° (360°).

[0050] In some examples, processor 106 determines in which of six sectors 320, 322, 324, 326, 328, or 330 position vector 301 is located to enable determination of T a 306, T b 308 and T c 310 for efficient control of the permanent magnet motor 208 via the three-phase inverter 206. In some examples, the use of six sectors facilitates the above efficient control of the rotating system 104 operating using AC current having a three-phase voltage waveform. In some examples, different numbers of sectors facilitate efficient operation of the rotating system 104 operating using different types of waveforms (e.g., waveforms having different numbers of phases).

[0051] Figure 4For illustration Figure 3 FIG. 4 is a diagram of an alternative example sector layout 400 within the rotor position vector space of the sector layout 300 of FIG. The sector layout 400 includes sixteen sectors, which are described by the alpha axis 312, the beta axis 314, the third line 402 at 45° (and 225°) from the alpha axis 312, and the fourth line 404 at 135° (and 315°) from the alpha axis 312. The third line 402 is also referred to as the 45° line 402, and the fourth line 404 is also referred to as the 135° line 404. Some of the sixteen sectors correspond to regions that span the angular range of the vector space, and some of the sixteen sectors correspond to positions on the alpha axis 312, the beta axis 314, the 45° line 402, or the 135° line 404.

[0052] Thus, the sector layout 400 includes a first sector (sector 0) 406 at 0°, a second sector (sector 1) 408 between 0° and 45°, a third sector (sector 2) 410 at 45°, a fourth sector (sector 3) 412 between 45° and 90°, a fifth sector (sector 4) 414 at 90°, a sixth sector (sector 5) 416 between 90° and 135°, a seventh sector (sector 6) 418 at 135°, an eighth sector (sector 7) 420 between 135° and 180°, and a sixth sector (sector 8) 421 at 180°. The ninth sector (sector 8) 422, the tenth sector (sector 9) 424 between 180° and 225°, the eleventh sector (sector 10) 426 at 225°, the twelfth sector (sector 11) 428 between 225° and 270°, the thirteenth sector (sector 12) 430 at 270°, the fourteenth sector (sector 13) 432 between 270° and 315°, the fifteenth sector (sector 14) 434 at 315°, and the sixteenth sector (sector 15) 436 between 315° and 360°.

[0053] In one example, the processor 106 and / or the FOC control circuit 202 (eg, the space vector generator 218) may determine the position vector 301 using three comparisons (see Figure 3 ; Figure 4 304 ) are located between the magnitude of Uα 302 and the magnitude of Uβ 304 , between Uα 302 and zero, and between Uβ 304 and zero. These relationships are shown in Table 1 below.

[0054] Table 1

[0055]

[0056]

[0057] In some examples, other comparisons than those shown in Table 1 may be used for sector determination, such as sign (Uα), sign (Uβ), Uα==0 (whether Uα is equal to zero), and Uβ==0. Figure 5 Provide additional examples.

[0058] In some examples, sectors 0, 2, 4, 6, 8, 10, 12, and 14 (406, 410, 414, 418, 422, 426, and 430) located at the boundary lines are included to correspond to available results for comparisons such as those described in Table 1. These sectors may correspond to estimated position vectors for a rotating system (e.g., rotating system 104). It should be noted that in some examples, the position is not estimated with infinite precision, and the position estimate may fall on the boundary lines.

[0059] By way of introduction, in an example embodiment, the instruction QUADF accepts two operands Mx and My. Mx is the x-coordinate (or the α-β coordinate in the α-β coordinate system), and My is the y-coordinate (or the β-coordinate in the α-β coordinate system). QUADF returns four operands TDM, Mx, My, and Mz. TDM is a sector number from 0 to 15 (e.g., sector 0 406 to sector 15 436). The returned Mx and My correspond to the acceptable Mx and My operands, which can be conditionally switched on return, and Mx can be conditionally inverted (multiplied by negative one) on return (in the example, before the conditional switch). As described above, Mz is a scalar value used to adjust the inverse tangent result from a limited range (e.g., -45° to 45°) to a full circle range (e.g., -180° to 180°). QUADF is further described below.

[0060] In some examples, the sector determination may be performed in response to the instruction QUADF. In some examples, the QUADF may also be used to determine the quadrant value (Mz) corresponding to the sector in which the position vector 301 is located. The name QUADF refers to the floating point quadrant determination instruction. The quadrant value is used to adjust the narrow range arc tangent result to the correct angular position within the full circle range. In some examples, QUADF is an assembly language instruction. In other examples, QUADF may be a higher level language instruction. In some examples, QUADF may be processed by the processor 106 within a single cycle of the clock generator 110. In some examples, the clock frequency is in the range of 100 megahertz to 2 gigahertz (or more).

[0061] In some examples, the QUADF function may be called using four operands as further defined below, such as QUADF TDM Mx My Mz. Such examples include using QUADF in a 32-bit instruction context as a parameter for determining the control vector T a 306, T b308 and T c 310 (or other control vectors for permanent magnet motor 208 or other motor or other rotating system 104), or as part of a process for determining atan2pu(). Example meanings and uses of the TDM, Mx, My, and Mz operands are further described below. The atan2pu() instruction is described below in the context of the atan(), atan2(), and puatan() instructions; in some architectures, these instructions are implemented and / or used as described.

[0062] In some examples, such as examples where QUADF is used as part of a process for determining atan2pu() in a 64-bit instruction context, QUADF may use five operands, such as QUADF TDM Mw Mx My Mz. In this example, Mw is the address of a register used to store the atan2pu() result (angle value) in 64-bit floating point format. In some examples, QUADF uses a different operand arrangement than those described above. In some examples, using the QUADF instruction facilitates determination of the inverse tangent to achieve faster, more efficient, and / or higher precision results.

[0063] In some examples, the operands of the QUADF instruction are register or other memory addresses or other identifiers. As described above, in some examples, these addresses or identifiers include TDM, Mx, My, and Mz. TDM corresponds to four one-bit flags that together store four bit values ​​indicating sectors within sector layout 400, ranging from 0000 (sector 0) to 1111 (sector 15). Therefore, the TDM flags together represent a binary number corresponding to the base ten sector number within sector layout 400. Mx is the address of a register storing an x ​​coordinate (also referred to as Mx), such as Uα302. My is the address of a register storing a y coordinate (also referred to as My), such as Uβ304. Mz is the address of a register for storing a quadrant value (also referred to as Mz) corresponding to the sector in which position vector 301 is located. In some examples, QUADF reads Mx and My, and writes to the TDM flags and the registers indicated by Mx, My, and Mz.

[0064] The following describes the use of QUADF and Mz to determine the exact full-circle per-unit inverse tangent result. Per-unit refers to the inverse tangent result normalized to the range of negative one to one (e.g., the range from negative π to π). Figure 5 , 6A , 6B and 7 describe the use of QUADF and TDM to determine the sector corresponding to the position vector 301 of a sector layout other than sector layout 400. Figure 7 and 8Controlling the rotation system 104 using the determined sectors is described. In some examples, the QUADF instruction is implemented in circuitry of the processor 404 such that the QUADF instruction can be executed by the processor 404 within one cycle of the clock 408. The memory 406 can store the QUADF instruction for execution by the processor 404.

[0065] In some instances, the value written by the QUADF instruction to the register indicated by Mz may be used to determine the result of a two operand instruction for determining the per-unit inverse tangent of the position vector 301 at any position within the full circle, thus atan2pu(). The instruction atan(r) determines the inverse tangent of a single operand r (ratio), having a range of -π / 2 (-90°) to π / 2 (90°), and in some instances, is accurate between negative π / 4 (-45°) and π / 4 (45°). The instruction puatan(r) returns a normalized atan(r) result to provide values ​​from -1 / 2 to 1 / 2, rather than from -π / 2 to π / 2. In some instances, puatan(r) is accurate between negative π / 4 (-45°) and π / 4 (45°). The instruction atan2(y,x) determines the inverse tangent of the ratio y / x between two operands (i.e., y and x) and has a range of -π (-180°) to π (180°). The instruction atan2pu(y,x) returns the normalized atan2(y,x) result to provide values ​​from -1 to 1 instead of from -π to -π.

[0066] In some instances, puatan() is a relatively faster instruction for processor 106 processing, for example, compared to atan2pu(). Thus, in some instances, faster processing of atan2pu() is achieved by using QUADF and puatan(). In some instances, QUADF is used because puatan() is most accurate between -45° and 45°, and because puatan() does not distinguish between inputs corresponding to: (1) negative y and positive x (270° to 0°, sectors 12 to 16) versus positive y and negative x (90° to 180°, sectors 4 to 8); or (2) positive y and positive x (0° to 90°, sectors 0 to 4) versus negative y and negative x (180° to 270°, sectors 8 to 12). These distinctions are achieved by the offset provided by Mz and by certain modifications to Mx and My made by QUADF in the corresponding sectors. Table 2 relates the sector numbering within sector layout 400 to the QUADF modifications to Mx and My, and the value of Mz.

[0067] Table 2

[0068] Sector number Mx and My variations Mz value Sector 0 none 0.0 Sector 1 none 0.0 Sector 2 none 0.0 Sector 3 Change the sign of Mx, then swap Mx and My 0.25 Sector 4 Swap Mx and My 0.25 Sector 5 Change the sign of Mx, then swap Mx and My 0.25 Sector 6 none 0.5 Sector 7 none 0.5 Sector 8 none 0.5 Sector 9 none -0.5 Sector 10 none -0.5 Sector 11 Change the sign of Mx, then swap Mx and My -0.25 Sector 12 Swap Mx and My -0.25 Sector 13 Change the sign of Mx, then swap Mx and My -0.25 Sector 14 none 0.0 Sector 15 none 0.0

[0069] Sectors 3, 4, and 5 are between 45° and 135° (and not including 45° and 135°). Sectors 11, 12, and 13 are between 225° (-135°) and 315° (-45°) (and not including 225° (-135°) and 315° (-45°)). The changes made to Mx and My (corresponding to Uα vector 302 and Uβ vector 304) in sectors 3, 4, 5, 11, 12, and 13 rotate the corresponding position vector 301 -90° about the origin, repositioning position vector 301 so that the ratio processed by puatan() corresponds to the range of -45° to 45°. Keep in mind that puatan() is most accurate between -45° and 45°, and that puatan() does not distinguish between specific sectors. For example, puatan() does not distinguish between the range 0° to 45° and the range 180° to 225° (both corresponding to positive ratios); or the range 0° to -45° (315°) and the range 135° to 180° (both corresponding to negative ratios). The value of Mz adjusts (1) the results of puatan() to compensate for puatan()'s sector disregard, and adjusts (2) the results for sectors 3, 4, 5, 11, 12, and 13, rotating the results back to the sector containing position vector 301.

[0070] In one example, Mx is negative and My is negative, corresponding to sector 9. Mz is equal to -0.5 in sector 9. The puatan() instruction receives the inputs Mx and My as a ratio (-y / -x=y / x) in sector 1. The -0.5 value of Mz rotates the puatan() result by -180° so that the atan2pu() result is in sector 9, corresponding to the original Mx and My inputs.

[0071] In another example, Mx is negative and My is positive, corresponding to sector 5. Mz is equal to 0.25 in sector 5. QUADF changes the sign of Mx (setting Mx to negative Mx) and swaps My and Mx (see Table 2). Thus, QUADF rotates position vector 301 by -90° into sector 1. The 0.25 value of Mz rotates the puatan() result by 90° so that the atan2pu() result is in sector 5 corresponding to the original Mx and My inputs. In some examples, the QUADF instruction enables the atan2pu() instruction to be processed within 14 cycles of clock generator 110.

[0072] In some instances, QUADF may be used with PUATANF and / or CORDICATANF (or other instructions) to determine the result of an atan2pu() instruction. In some instances, a Coordinate Rotation Digital Computer (CORDIC) instruction or procedure uses a binary search to determine the result. CORDIC refers to an iterative method for solving certain types of mathematical problems. PUATANF refers to a floating point instruction for determining the inverse tangent per unit.

[0073] Figure 5 To illustrate the method for determining the position vector 301 (in Figure 5 500 is a diagram of a process for determining the sector in which the position vector 301 is located (not shown in FIG. 5 ). In an example where the sectors are not divided at 45° intervals (e.g., in sector layout 300), the sector corresponding to position vector 301 may be determined by rescaling position vector 301. Figure 3 In the sector layout 300 of FIG. 1 , a 60° line 316 and a 120° line 318 defining 60° intervals starting from the α axis 312 are used to divide and indicate sectors. Figure 4 In the sector layout 400, the 45° line 402 and the 135° line 404 defining 45° intervals starting from the α axis 312 are used to divide and indicate sectors. Figure 5 The example of Figure 500 illustrates a display Figure 3 The sector layout 300, which is rescaled to correspond to Figure 4 400, so that the 45° line 402 and the 135° line 404 are used to divide and indicate the sectors. This rescaling establishes a correspondence between the sector layout 300 and the sector layout 400.

[0074] The Uα vector 302 and the Uβ vector 304 may be rescaled so that the lines delimiting transitions between sectors are transformed to the 45° line 402 and the 135° line 404. This enables the use of a process for determining sectors delimited by the 45° line 402 and the 135° line 404 (e.g., using a QUADF instruction) or in other ways as shown or described with respect to Table 1 to determine the sector position within a sector delimited by a set of selectable lines. In some examples, the Uα vector 302 corresponds to the Mx operand of the QUADF, and the Uβ vector 304 corresponds to the My operand of the QUADF.

[0075] In one example, the Uα vector 302 may be rescaled as shown in Equation 1, and the Uβ vector 304 may be rescaled as shown in Equation 2:

[0076] Mx = Uα / |sin(delimiting line angle)| Equation 1

[0077] My = Uβ / |cos(delimiting line angle)| Equation 2

[0078] The delimiting line angle refers to the angle from the α (or x) axis 312 to the line (or lines) delimiting the sector, such as the 60° line 316 and the 120° line 318. The delimiting line angle of the 60° line 316 is 60°, and the delimiting line angle of the 120° line 318 is 120°. Therefore, for this example, Mx = Uα×√3 / 2 (approximately 0.866), and My = Uβ×0.5.

[0079] After the rescaling described with respect to equations 1 and 2, the position vector 301 between the 60° line 316 and the axis (either the α axis 312 or the β axis 314) is located between the 45° line 402 and the same axis. Similarly, the position vector between the 120° line 318 and the axis is located between the 135° line 404 and the same axis. Position vectors aligned with the 60° line 316 or the 120° line 318 are rescaled to align with the 45° line 402 or the 135° line 404, respectively. Figure 4 The arrows from the 60° line 316 to the 45° line 402 and from the 120° line 318 to the 135° line 404 in FIG. 4 indicate this correspondence. Position vectors aligned with an axis remain aligned with the same axis. Moreover, rescaling does not change the sign of the coordinates (positive or negative). Therefore, and as with respect to Fig. 6A and 6B Describing further, determining the sector position of position vector 301 within sector layout 300 is equivalent to determining the sector position of the rescaled position vector within sector layout 400 .

[0080] Fig. 6A and 6B An example of the rescaling described with respect to Equations 1 and 2 is illustrated. Fig. 6A for Figure 3 An example position vector (U) within the sector layout 300 POS )602 of the first graphic 600. Figure 6B is rescaled to Figure 4 The rescaled position vector (U POS_RS )610 of a second graph 608 of an example position vector 602 .

[0081] Position vector 602 is represented by orthogonal components Uα 604 and Uβ 606. Example position vector 602 is selected so that it lies on 45° line 402 (at Figure 6B Shown in Fig. 6A ) and the 60° line 316 (shown in Fig. 6A Shown in Figure 6B (shown in the).

[0082] The position vector 602 is rescaled using equations 1 and 2 to form a rescaled position vector 610. Rescaling the position vector 602 corresponds to applying equation 1 to Uα 604 to form a rescaled α component Uα RS 612, and applying Equation 2 to Uβ 606 to form the rescaled β component Uβ RS 614. Rescaling the position vector 602 using equations 1 and 2 also rescales the 60° line 316 to correspond to the 45° line 402, and rescales the 120° line 318 to correspond to the 135° line 404. Furthermore, Figure 3 The six-sector sector layout 300 is rescaled to correspond to Figure 4 Sixteen-sector sector layout 400 of FIG. 4. Note that position vector 602 is located within sector 1 320 in sector layout 300 and that rescaled position vector 610 is located within sector 1 408 in sector layout 400.

[0083] Thus, determining the sector within sector layout 300 corresponding to position vector 602 is equivalent to determining the sector within sector layout 400 corresponding to rescaled position vector 610. This enables sectors within sector layout 400 to be determined relative to rescaled position vector 610 to be mapped to sectors within sector layout 300 corresponding to position vector 602. Once it is determined that rescaled position vector 610 is located within sector 1 408, a mapping function (e.g., a memory access or calculation) may be applied to determine that position vector 602 is located within sector 1 320. Determining sectors within sector layout 400 may be performed using comparisons as shown in Table 1 or using other comparisons as described herein. In some examples, these comparisons may be implemented in hardware, which may provide benefits such as increased speed, reduced power, and / or reduced device footprint.

[0084] In some examples, the mapping correspondence between a first sector layout (e.g., sector layout 400) and a second sector layout (e.g., sector layout 300) may be stored in a lookup table, register, or other memory, or encoded in hardware, or otherwise determined using hardware or software, or a combination of hardware and software.

[0085] Back to Figure 5 , as shown by graph 500, the sector position of the position vector can be determined by determining the truth value of the comparisons Uα+Uβ>0, Uα-Uβ>0, and Uβ>0. These comparisons are similar to the comparisons used to generate Table 1, and are sufficient to distinguish the six sectors of sector layout 300 after rescaling, as described above. In some examples, comparisons Uα+Uβ>0 and Uα-Uβ>0 are equivalent to comparing the magnitude of Uα vector 302 to the magnitude of Uβ vector 304.

[0086] For example, consider sector 1 320. Figure 5 As shown, after the rescaling transformation indicated by the arrow (as described above), the rescaled sector 1 320 includes a span of 0° to 45°. In this span, certain conditions are true, as shown outside the perimeter of the graph for this segment 1 320. Specifically, in the rescaled sector 1 320, Uα+Uβ>0 (from 0° to 135°), Uα-Uβ>0 (from 225° to 45°), and Uβ>0 (from 0° to 180°). Corresponding observations can be made in the other sectors. In the rescaled sector 2 322, Uα+Uβ>0, Uα-Uβ<0, and Uβ>0. In the rescaled sector 3 324, Uα+Uβ<0, Uα-Uβ<0, and Uβ>0. In rescaled sector 4 326, Uα+Uβ<0, Uα-Uβ<0, and Uβ<0. In rescaled sector 5 328, Uα+Uβ<0, Uα-Uβ>0, and Uβ<0. In rescaled sector 6 330, Uα+Uβ>0, Uα-Uβ>0, and Uβ<0.

[0087] In some examples, the name zero sector refers to the zero force vector applied to the rotor within the zero sector, and corresponds to the vector (e.g., T a 306, T b 308 and T c 310) of a given zero derivative. Zero sectors are further described with respect to FIG. 6. In some examples, sector 0 406 corresponds to sector 1 320, and sector 8 422 corresponds to sector 4 326. In some examples, the sector correspondence is different than described herein. In some examples, different dividing lines (at different angles from the alpha axis 212 or another reference) than those described herein may be used.

[0088] In the example using the 60° line 316 and the 120° line 318 as sector demarcation lines, the first zero sector corresponds to sector 0406 (see Figure 4 ), sector 1 320 corresponds to sectors 1 and 2 (408 and 410), sector 2 322 corresponds to sectors 3, 4, and 5 (412, 414, and 416), sector 3 324 corresponds to sectors 6 and 7 (418 and 420), the second zero sector corresponds to sector 8 422, sector 4 326 corresponds to sectors 9 and 10 (424 and 426), sector 5 328 corresponds to sectors 11, 12, and 13 (428, 430, and 432), and sector 6 330 corresponds to sectors 14 and 15 (434 and 436). In some examples, flags included in the TDM are compared to a table to make this correspondence.

[0089] In the corresponding Figure 3 In some examples of the sector layout 300, in sectors 1 and 4 (320 and 326), T a =Uα×√3 / 2+Uβ / 2, T b =-Uα×√3 / 2+Uβ×3 / 2, and T c =-Uα×√3 / 2-Uβ / 2. In sectors 2 and 5 (322 and 328), T b =Uβ, and T c = -Uβ. And in sectors 3 and 6 (324 and 330), and

[0090] In some examples, fewer or more dividing lines are used to achieve different sector correspondences. For example, in addition to the 60° line 316 and the 120° line 318, the 30° line and the 150° line (not shown) may also be used, thereby enabling the use of the QUADF instruction to determine the position of the position vector 301 within any of the twelve sectors (or twenty-four sectors if the dividing lines are counted as sectors). For example, the QUADF instruction may be called after rescaling the 60° line 316 and the 120° line 318 to obtain a first TDM result, and then the QUADF instruction may be called a second time after rescaling the 30° line and the 150° line to obtain a second TDM result. The two TDM results may be compared to determine in which of the twelve sectors the position vector 301 is located.

[0091] Figure 7 For use Figure 2 2. An example control system 700 for a three-phase inverter 206 of FIG. 20 is shown. The control system includes a voltage source 702, such as a DC power supply 204, a first n-channel insulated gate bipolar transistor (IGBT) (IGB1) 704, a second n-channel IGBT (IGB2) 706, a third n-channel IGBT (IGB3) 708, a fourth n-channel IGBT (IGB4) 710, a fifth n-channel MOSFET (IGB5) 712, and a sixth n-channel MOSFET (IGB6) 714. In some examples, silicon carbide or gallium nitride transistors may be used instead of IGBTs. In some examples, the IGBTs may be manufactured to operate as high voltage switches, such as in the range of 400 volts to 800 volts.

[0092] The positive terminal of the voltage source 702 is connected to the collector and cathode of the body diodes of IGB1 704, IGB2 706, and IGB3 708. The negative terminal of the voltage source 702 is connected to the emitter and anode of the body diodes of IGB4 710, IGB5 712, and IGB6 714. The first output (output A) of the control system 700 is connected to the emitter and anode of the body diode of IGB1 704, and to the collector and cathode of the body diode of IGB4 710. The second output (output B) of the control system 700 is connected to the emitter and anode of the body diode of IGB2 706, and to the collector and cathode of the body diode of MN5 712. And, the third output (output C) of the control system 700 is connected to the emitter and anode of the body diode of IGB3 708, and to the collector and cathode of the body diode of IGB6 714.

[0093] The gate of IGB1 704 receives a control signal Control1. The gate of IGB4 710 receives a control signal / Control1, which is the opposite of Control1, so that when IGB1 704 turns on IGB4 710, and when IGB1 704 turns off, IGB4 710 turns on. The gate of IGB2 706 receives a control signal Control2, and the gate of IGB5 712 receives a control signal / Control2, which is the opposite of Control2. The gate of IGB3 708 receives a control signal Control3, and the gate of IGB6 714 receives / Control3, which is the opposite of Control3.

[0094] In some examples, in response to determining that position vector 301 is in sector 1 320, IGB1 704 is turned on, IGB2 706 is turned off, IGB3 708 is turned off, IGB4 710 is turned off, IGB5 712 is turned on, and IGB6 714 is turned on. In response to determining that position vector 301 is in sector 2 322, IGB1 704 is turned on, IGB2 706 is turned on, IGB3 708 is turned off, IGB4 710 is turned off, IGB5 712 is turned off, and IGB6 714 is turned on. In response to determining that position vector 301 is in sector 3 324, IGB1 704 is turned off, IGB2 706 is turned on, IGB3 708 is turned off, IGB4 710 is turned on, IGB5 712 is turned off, and IGB6 714 is turned on.

[0095] In response to determining that position vector 301 is in sector 4 326, IGB1 704 is turned off, IGB2 706 is turned on, IGB3 708 is turned on, IGB4 710 is turned on, IGB5 712 is turned off, and IGB6 714 is turned off. In response to determining that position vector 301 is in sector 5 328, IGB1 704 is turned off, IGB2 706 is turned off, IGB3 708 is turned on, IGB4 710 is turned on, IGB5 712 is turned on, and IGB6 714 is turned off. And, in response to determining that position vector 301 is in sector 6 330, IGB1 704 is turned on, IGB2 706 is turned off, IGB3 708 is turned on, IGB4 710 is turned off, IGB5 712 is turned on, and IGB6 714 is turned off.

[0096] In response to position vector 301 being in a first zero sector, IGB1 704 is turned on, IGB2 706 is turned on, IGB3 708 is turned on, IGB4 710 is turned off, IGB5 712 is turned off, and IGB6 714 is turned off. In response to position vector 301 being in a second zero sector, IGB1 704 is turned off, IGB2 706 is turned off, IGB3 708 is turned off, IGB4 710 is turned on, IGB5 712 is turned on, and IGB6 714 is turned on. In some examples, all switches on the positive terminal side or all switches on the negative terminal side correspond to a zero net force vector applied to the rotor of permanent magnet motor 208.

[0097] Figure 8 800 for determining the inverse tangent of a position vector 301. In step 802, an initial position vector (e.g., position vector 301) is received. The initial position vector corresponds to the sum of a first component in a first dimension (e.g., Uα vector 302) and a second component in a second dimension (e.g., Uβ vector 304). In step 804, in response to the position vector being outside a selected range, the initial position vector is rotated by a rotation angle selected to rotate the position vector to within the selected range to provide a processed position vector that may or may not be rotated relative to the initial position vector (e.g., a position vector having an x-dimensional component equal to zero or a y-dimensional component equal to zero may not be rotated).

[0098] In some examples, step 804 corresponds to either of the following two cases. First, if the position vector 301 is in sector 3, 4, 5, 11, 12, or 13, the position vector 301 is rotated by -90°. In some examples, the first case rotation is achieved by multiplying the Uα vector 302 by negative one (in some examples, if the Uα vector 302 is not zero) and swapping the inverted Uα vector 302 with the Uβ vector 304. Alternatively, second, if the position vector is in sector 6, 7, 8, 9, or 10, the position vector 301 is rotated by 180° (or -180°). In some examples, the second case rotation is achieved by dividing the Uβ vector 304 by the Uα vector 302 (i.e., determining a ratio to be used as an input for the inverse tangent operation). Keep in mind that in some instances the output of the inverse tangent operation cannot distinguish the difference between position vectors 301 in certain sectors, e.g., between sector 1 408 and sector 9 424, or between sector 15 436 and sector 7 420. Note also that the second case rotation is applied after the first case rotation is applied, when appropriate.

[0099] In some examples, the initial position vector may be rotated from the first case by an angle other than -90°. In some examples, the selected range is not -45° to 45°.

[0100] In step 806, the inverse tangent of the processed position vector is determined to provide an inverse tangent output angle. In some examples, process 800 enables step 806 to be performed using an inverse tangent instruction having a relatively narrow input range for which the inverse tangent instruction produces an accurate output, while enabling the use of an inverse tangent instruction such as atan() that can be processed relatively quickly (e.g., compared to other inverse tangent instructions such as atan2() instructions).

[0101] In step 808, the rotation angle is subtracted from the inverse tangent output angle in response to the processed position vector being rotated relative to the initial position vector to provide a result angle that may or may not be different from the inverse tangent output angle. In some examples, the units of the rotation angle used in step 808 (e.g., unitless) are different from the units used in step 804 (e.g., degrees or radians). In some examples, the Mz value determined by the QUADF instruction (as described above) is an example of a rotation angle value that can be used in step 808 for the inverse tangent instruction (step 806) that returns a per-unit inverse tangent result. The per-unit inverse tangent result is normalized so that a full circle corresponds to an angle range of -1 to 1. In some examples, the Mz value is the opposite (negative) of the rotation angle applied by the first case rotation and / or the second case rotation applied by step 804.

[0102] In some examples, steps 806 and 808 are performed in response to a single instruction. In some examples, steps 806 and 808 are performed in response to multiple instructions (eg, separate instructions for steps 806 and 808).

[0103] Fig. 9 9 is a process for determining a sector corresponding to a position vector 301. In step 902, a position vector 301 corresponding to a sum of a first component in a first dimension and a second component in a second dimension is received. In some examples, the first component is a Uα vector 302 and the second component is a Uβ vector 304. In step 904, a first set of sector boundaries corresponding to a first sector layout is received, such as a 60° line 316 and a 120° line 318.

[0104] In step 906, a second set of sector demarcation lines corresponding to a second sector layout is received, such as 45° line 402 and 135° line 404. In some examples, the second set of sector demarcation lines includes lines where the first dimension is equal to the second dimension (e.g., x=y or α=β), and lines where the first dimension is equal to the opposite (negative) of the second dimension (e.g., x=-y or α=-β). In some examples, the second sector layout corresponds to sector layout 400.

[0105] In step 908, the first component and the second component are rescaled in response to the first set of sector boundaries and the second set of sector boundaries to provide a rescaled position vector corresponding to the sum of the first rescaled component and the second rescaled component. In some examples, this rescaling is performed as shown in and described with respect to equations 1 and 2. In step 910, the magnitude of the first rescaled component is compared to the magnitude of the second rescaled component, and either the first rescaled component or the second rescaled component is compared to zero.

[0106] In step 912, a middle sector of the rescaled position vector is determined in response to the comparing action and the second sector layout. In step 814, the middle sector is converted from the second sector layout to the first sector layout to provide a resulting sector.

[0107] Modifications may be made in the described examples and other examples may be made within the scope of the claims.

[0108] In some examples, processor 106 is a central processing unit (CPU), a digital signal processor (DSP), or a microcontroller.

[0109] In some examples, one or more of the functional blocks described with respect to FOC control circuit 202 are performed using software instructions stored in a memory and executed on a processor.

[0110] In some examples, one or more of the functional blocks described with respect to FOC control circuit 202 are performed using dedicated hardware.

[0111] In some examples, the methods or processes described herein are performed using software, hardware, or a combination of software and hardware.

[0112] In some examples, electric machines other than permanent magnet electric machines are used, such as induction electric machines.

[0113] In some examples, some or all of FOC control circuit 202 is fabricated on an IC, such as IC 102 .

[0114] In some examples, the QUADF instruction is used with an inverse tangent instruction other than puatan(), such as an inverse tangent instruction with a different range or that returns a value in degrees or radians. In some examples, the Mz value is determined based on the selected range and units used by the corresponding inverse tangent instruction.

[0115] In some examples, a voltage regulator other than three-phase inverter 206 is used to provide power to permanent magnet motor 208 (or other destination of rotating system 104 ). In some examples, a power supply other than DC power supply 204 is used to provide power to a voltage regulator used to power permanent magnet motor 208 .

[0116] The term "coupled" as used in the specification may encompass connections, communications, or signal paths that enable a functional relationship consistent with the specification. For example, if device A provides a signal to control device B to perform an action, then in a first instance, device A is coupled to device B, or in a second instance, device A is coupled to device B through an intermediate component C, provided that the intermediate component C does not substantially change the functional relationship between device A and device B, such that device B is controlled by device A through the control signal provided by device A.

[0117] In this specification, the term "and / or" (when used in the form of, for example, A, B, and / or C) refers to any combination or subset of A, B, C, for example: (a) A alone; (b) B alone; (c) C alone; (d) A and B; (e) A and C; (f) B and C; and (g) A and B and C. Moreover, as used herein, the phrase "at least one of A or B" (or "at least one of A and B") refers to embodiments that include any of the following: (a) at least one A; (b) at least one B; and (c) at least one A and at least one B.

[0118] A device "configured to" perform a task or function may be configured (e.g., programmed and / or hardwired) to perform the function when manufactured by a manufacturer, and / or may be configurable (or reconfigurable) by a user after manufacture to perform the function and / or other additional or alternative functions. Configuration may be through firmware and / or software programming of the device, through the construction and / or layout of the device's hardware components and interconnections, or a combination thereof.

[0119] As used herein, the terms "terminal", "node", "interconnect", "pin", "solder ball", and "lead" are used interchangeably. Unless specifically stated to the contrary, these terms are generally used to refer to the interconnections between device elements, circuit elements, ICs, devices, or other electronic devices or semiconductor components, or their terminations.

[0120] A circuit or device described herein as including certain components may actually be adapted to be coupled to those components to form the described circuit system or device. For example, a structure described as including one or more semiconductor elements (e.g., transistors), one or more passive elements (e.g., resistors, capacitors, and / or inductors), and / or one or more sources (e.g., voltage sources and / or current sources) may actually include only semiconductor elements within a single physical device (e.g., a semiconductor die and / or an integrated circuit (IC) package), and may be adapted to be coupled to at least some of the passive elements and / or sources to form the described structure at the time of manufacture or after manufacture, for example, by an end user and / or a third party.

[0121] Although the use of specific transistors is described herein, other transistors (or equivalent devices) may be used alternatively with little or no change to the remaining circuitry. For example, metal oxide silicon FETs ("MOSFETs") (e.g., n-channel MOSFETs (nMOSFETs), or p-channel MOSFETs (pMOSFETs)), bipolar junction transistors (BJTs, such as NPN or PNP), insulated gate bipolar transistors (IGBTs), and / or junction field effect transistors (JFETs) may be used in place of or in conjunction with the devices disclosed herein. The transistors may be depletion mode devices, drain extension devices, enhancement mode devices, native transistors, or other types of device structure transistors. Furthermore, the devices may be implemented in / on a silicon substrate (Si), a silicon carbide substrate (SiC), a gallium nitride substrate (GaN), or a gallium arsenide substrate (GaAs).

[0122] While certain elements of the described examples may be included in an integrated circuit and other elements external to the integrated circuit, in other example embodiments, additional or fewer features may be incorporated into the integrated circuit. In addition, some or all of the features described as external to the integrated circuit may be included in the integrated circuit, and / or some features described as internal to the integrated circuit may be incorporated external to the integrated circuit. As used herein, the term "integrated circuit" refers to one or more circuits that: (i) are incorporated in / on a semiconductor substrate; (ii) are incorporated in a single semiconductor package; (iii) are incorporated in the same module; and / or (iv) are incorporated in / on the same printed circuit board.

[0123] The use of the phrase "ground" in the foregoing description includes chassis ground, ground line ground, floating ground, virtual ground, digital ground, universal ground, and / or any other form of ground connection that is applicable or suitable for the teachings of this specification. Unless otherwise stated, "about," "approximately," or "substantially" preceding a value means + / -10% of the value, or if the value is zero, means a reasonable range of values ​​around zero.

Claims

1. A device comprising: a non-transitory memory configured to store a first instruction; as well as A processor configured to receive the first instruction from the memory and, in response to the first instruction, perform the following operations: receiving a position vector corresponding to a sum of a first component in a first dimension and a second component in a second dimension; comparing the magnitude of the first component to the magnitude of the second component and comparing the first component or the second component to zero; and The sector in which the position vector is located is determined in response to the comparing act.

2. The device according to claim 1, wherein the memory is configured to store additional instructions; and Wherein the processor is configured to receive the additional instructions from the memory and, in response to the additional instructions, operate a rotation system in response to the sector.

3. The device according to claim 1, wherein the determining sector action is performed in response to a sector layout; and The sector layout corresponds to an axis, a first dividing line and a second dividing line in the first dimension.

4. The device according to claim 3, wherein the sector layout is a first sector layout; wherein the memory is configured to store additional instructions; and wherein the processor is configured to receive the additional instructions from the memory and, in response to the additional instructions, perform the following operations: Prior to the receiving act, rescaling the position vector to provide a first rescaled component and a second rescaled component in response to the first sector layout and a second sector layout, the second sector layout corresponding to the axis, the third dividing line, and the fourth dividing line; and When the first instruction is executed, the first rescaled component is used as the first component, and the second rescaled component is used as the second component.

5. The device of claim 4, wherein the processor is configured to perform the rescaling action in response to the additional instructions by dividing the first component by the sine of the angle between the third dividing line and the axis, and dividing the second component by the cosine of the angle between the third dividing line and the axis.

6. The device according to claim 1, wherein the position vector is an initial position vector; and Wherein the processor is configured to, in response to the first instruction and in response to the position vector being outside a selected range, rotate the initial position vector by a rotation angle selected to rotate the position vector into the selected range to provide a processed position vector.

7. The device according to claim 6, wherein the memory is configured to store additional instructions; and wherein the processor is configured to receive the additional instructions from the memory and, in response to one or more of the additional instructions, perform the following operations: determining an inverse tangent of the processed position vector to provide an inverse tangent output angle; and In response to the processed position vector being rotated relative to the initial position vector, the rotation angle is subtracted from the inverse tangent output angle to provide a result angle.

8. A controlled system comprising: Rotation system; a non-transitory memory configured to store a first instruction and a second instruction; as well as A processor configured to receive the first instruction from the memory and, in response to the first instruction, perform the following operations: receiving a position vector corresponding to a sum of a first component in a first dimension and a second component in a second dimension; comparing a magnitude of the first component to a magnitude of the second component, and comparing the first component or the second component to zero; as well as determining, in response to the comparing action, a sector in which the position vector is located; Wherein the processor is configured to receive the second instruction from the memory, and in response to the second instruction, control the rotation system based on the sector.

9. The controlled system according to claim 8, wherein the determining sector action is performed in response to a sector layout; and The sector layout corresponds to an axis, a first dividing line and a second dividing line in the first dimension.

10. The controlled system according to claim 9, wherein the sector layout is a first sector layout; wherein the memory is configured to store additional instructions; and wherein the processor is configured to receive the additional instructions from the memory and, in response to the additional instructions, perform the following operations: Prior to the receiving act, rescaling the position vector to provide a first rescaled component and a second rescaled component in response to the first sector layout and a second sector layout, the second sector layout corresponding to the axis, the third dividing line, and the fourth dividing line; and When the first instruction is executed, the first rescaled component is used as the first component, and the second rescaled component is used as the second component.

11. A controlled system according to claim 10, wherein the processor is configured to perform the rescaling action in response to the additional instruction by dividing the first component by the sine of the angle between the third dividing line and the axis, and dividing the second component by the cosine of the angle between the third dividing line and the axis.

12. The controlled system according to claim 8, wherein the position vector is an initial position vector; and Wherein the processor is configured to, in response to the first instruction and in response to the position vector being outside a selected range, rotate the initial position vector by a rotation angle selected to rotate the position vector into the selected range to provide a processed position vector.

13. The controlled system according to claim 12, wherein the memory is configured to store additional instructions; and wherein the processor is configured to receive the additional instructions from the memory and, in response to one or more of the additional instructions, perform the following operations: determining an inverse tangent of the processed position vector to provide an inverse tangent output angle; and In response to the processed position vector being rotated relative to the initial position vector, the rotation angle is subtracted from the inverse tangent output angle to provide a result angle.

14. A method comprising: receiving an initial position vector corresponding to a sum of a first initial component in a first dimension and a second initial component in a second dimension such that the initial position vector is scaled according to a first sector layout; receiving a second sector layout; responsive to the first sector layout and the second sector layout, rescaling the first initial component and the second initial component to provide a rescaled position vector corresponding to a sum of the first rescaled component and the second rescaled component such that the rescaled position vector is scaled according to the second sector layout; comparing a magnitude of the first rescaled component to a magnitude of the second rescaled component, and comparing the first rescaled component or the second rescaled component to zero; determining an intermediate sector of the rescaled position vector in response to the comparing act and the second sector layout; as well as The intermediate sector is converted from the second sector layout to the first sector layout to provide a resulting sector.

15. The method of claim 14, further comprising operating a rotation system in response to the result sector.

16. The method of claim 14, wherein the first sector layout corresponds to a first set of boundaries and the second sector layout corresponds to a second set of boundaries.

17. The method according to claim 16, wherein the first set of dividing lines corresponds to an axis, a first dividing line, and a second dividing line in the first dimension; and The second set of dividing lines corresponds to the axis, the third dividing line and the fourth dividing line in the first dimension.

18. The method of claim 17, wherein the rescaling is performed by dividing the first initial component by the sine of the angle between the third dividing line and the axis, and dividing the second initial component by the cosine of the angle between the third dividing line and the axis.

19. The method of claim 14, further comprising, in response to the initial position vector being outside a selected range, rotating the initial position vector by a rotation angle selected to rotate the initial position vector into the selected range to provide a processed position vector.

20. The method of claim 19, further comprising: determining an inverse tangent of the processed position vector to provide an inverse tangent output angle; as well as In response to the processed position vector being rotated relative to the initial position vector, the rotation angle is subtracted from the inverse tangent output angle to provide a result angle.

Citation Information

Patent Citations

  • Adaptive torque disturbance cancellation for electric motors

    US10666180B2