Closed loop torque angle control of synchronous motor

A closed loop motor system having a motor with a plurality of poles and motor windings associated therewith. The poles define full step motor output positions. The system is of the type that assigns intermediated current values to the motor windings for fine step positions of the motor. The system also comprises a motor output position encoder for generating an integral and fixed number of encoder pulses as the motor moves between any two motor poles. The pulses are equally spaced and at least some corresponding to the fine step positions. An initializing current comprising components for applying full step current values to motor windings for a time interval in which the motor output is assumed to align with a full step position, and components for zeroing the count in the counter and assigning the torque angle value, whereby the encoder does not require alignment relative to the motor.

BACKGROUND OF THE INVENTION 
Electronic torque angle control for commutation of field flux in stationary 
armature motors has been a known motor control technique for many years. 
The development of this technique was spurred by the desire to utilize an 
AC synchronous machine in a "closed loop" position-control environment, 
traditionally reserved for "brush" type DC servo motors. Permanent magnets 
replaced the field windings in the rotor of the AC synchronous motor 
which, traditionally, were energized through slip rings and brushes. The 
utilization of permanent magnets in the rotor provided for brush free 
operation. 
The brushless machines were referred to as "brushless DC" motors due to the 
expense involved in electronically emulating pure sinusoidal current 
required by the traditional "line" driven AC synchronous motors. 
The stator poles in these motors were purposely skewed to produce a 
"flattened" counter electro-motive force (CEMF) in each of the phase 
windings. In turn, the phase currents (controlled by the amplifier) were 
in themselves "flat" In this control method formally known as "six step" 
control, the currents in each phase (assuming three phase) are alternating 
"square" waves which are positive for 120 degrees, off for 60 degrees, 
negative for 120 degrees, and off again for 60 degrees. The stator current 
to flux transpositions are noticeably finite in that only six flux angles 
per electrical cycle are possible with this type of control. The direction 
of stator flux generated by a given stator pole is always perpendicular to 
the given pole (90 degrees displaced). The magnitude of this flux is 
generally proportional to the magnitude of current flowing in the specific 
pole windings. 
The standard method for "six step" commutation feedback is to place three 
Hall effect switches in the stator windings of the motor. Three logic 
signals are produced from these switches. 
Six step commutation control is a relatively inexpensive and a simple 
technique to implement, as far as commutation drive logic drive amplifier 
and rotor sensor feedback are concerned. However, performance suffers in 
that the torque angle "jumps" ahead of the rotor magnet flux in 60 degree 
increments due to the relatively crude resolution of the rotor feedback 
sensors (six steps per full electrical cycle). Low speed performance 
suffers because motor poles can never be perfectly positioned (skewed) in 
manufacturing to provide "flattened" CEMF waveforms over the "flat" six 
step induced phase currents. 
As a result, torque fluctuations (at a fundamental rate of six times per 
electrical cycle) are induced on the rotor shaft, complicating smooth low 
speed control when the motor is used in a closed loop position or velocity 
application. 
The drive amplifier portion of the six step controller is usually 
implemented with SCRs (thyristors). These semiconductor switches are used 
to "route" a constant current source (or voltage source, if voltage 
instead of current is being regulated) through the six steps of the 
electrical cycle. A DC current regulator (for six step current control) or 
DC voltage regulator (for six step voltage control) is inserted in "front" 
of the SCR bridge to control the amplitude of the phase current or phase 
voltage, respectively. 
With the emergence of high power switching bipolar transistors came the 
ability to provide pulse width modulation (PWM) current control to the 
stator phase windings of the brushless motor. 
Since, the bipolar transistor has the ability to "switch" at a much higher 
rate than the SCR, phase current (or voltage) amplitude along with the 
"six step" phase routing can be incorporated into one set of devices, if 
desired. 
However, with PWM capability, the waveforms no longer need to resemble 
square waves as in the six step control discussed above. With the proper 
drive amplifier control electronics, PWM control can be used to generate 
sinusoidal waveforms for each phase of the motor. See, for example, Jones 
U.S. Pat. No. 4,540,925 and Takahashi U.S. Pat. No. 4,051,419. 
Using sinusoidal control, the motor stator can now be wound with the 
simpler, more traditional method for true AC control. The low speed torque 
fluctuation problems apparent with six step control are significantly 
reduced. 
However, the rotor feedback sensor(s) needed to generate the sinusoidal (as 
opposed to the six step) current (or voltage) waveforms need to be more 
complex. This is because the sinusoidal waveform "varies" amplitude with 
rotor position, while the six step wave form turns "off or on" with plus 
or minus polarity to a constant amplitude, depending on the position of 
the rotor within a .+-.30 degree envelope. A small, incremental angular 
change in rotor position must be able to be detected in order to emulate 
the sinusoidal stator phase currents. 
The complicated rotor sensor needed to generate the sinusoidal phase 
control waveforms needs to have much more position resolution than the 
simple six step rotor sensors described for the DC brushless controller. 
The drive amplifier control electronics must be more complicated in order 
to generate the sinusoidal current command signals. These two factors tend 
to illustrate the negative aspects of the AC brushless control scheme. 
High performance AC brushless drive manufacturers have generally 
established the "resolver" position transducer as the "standard" for 
deriving absolute rotor position necessary for sinusoidal control. The 
resolver is a magnetic sensor resembling a small two phase AC motor whose 
rotor is excited with a high frequency AC square wave induced on its rotor 
winding (usually through a set of small slip rings). Two stator windings 
(electrically displaced 90 degrees) "couple" the rotor field. As the shaft 
of the resolver is turned, the two stator phases alternate sinusoidally 
and in quadrature (i.e., one sine, the other cosine). 
The two returning stator phases (along with the outgoing excitation signal) 
are connected to a sophisticated demodulator chip (usually termed 
"Resolver to Digital" converter). This converter produces "digital" output 
information relative to the "absolute" rotor position of the resolver (and 
hence the rotor position of the AC motor relative to its stator). The 
digital output of the converter chip (usually 10 to 16 bits in 
resolution), in turn, is fed to the address inputs of a ROM 
(read-only-memory) chip. The ROM (or ROMs) chip is programmed with 
multiple sets of "sinusoidal" data, relative to the ROM address inputs. 
The sinusoidal output of the ROM is in turn converted into analog signals 
through a Digital to Analog converter (D/A). It is these signals that are 
used as current command signal to the power amplifier. The motor stator 
phase currents controlled by these signals are referenced to the motor 
through the ROM data tables to produce a stator field flux that is 
angularly displaced with respect to the rotor field by some predetermined 
angle. 
This angular phase displacement is usually fixed. (More sophisticated 
controllers allow the angle to vary under controlled conditions). Fixed 
angular phase displacement (angular phase displacement will be denoted as 
"Torque Angle" from this point) is the usual form of control for brushless 
machines used in positioning applications. With fixed torque angle 
control, the only control variable for motor operation is the varying of 
amplitude of the sinusoidal current flowing in each of the motor stator 
windings. Thus an AC drive amplifier, matched with AC brushless motor 
whose rotor feedback mechanism provides "fixed" torque angle rotor to 
stator displacement is essentially an electronically controlled version of 
the traditional DC drive and DC brush type motor with "fixed" mechanical 
brush commutator. 
The general purpose "hybrid" stepping motor is in essence an AC brushless 
motor whose stator is wound for two phase instead of three phase 
excitation, and whose mechanical pole count is typically much higher than 
that of the general purpose three phase AC brushless motor. 
FIG. 1 illustrates the basic stator winding phase relationships of a 
stepping motor (rotor not shown). The stator 10 consists of two winding 
set labeled A-A' and B-B' "electrically" displaced by 90 degrees. The word 
"electrically" is emphasized to illustrate the fact that this general type 
of stepping motor actually consists of multiple sets of A-A' and B-B' 
(usually 50 sets) distributed evenly around the stator shell. For 
simplicity, this and future illustrations will depict the stepping motor 
as having one set of A-A' and B-B' poles. Thus, for these illustrations 
one full electrical cycle will represent one full rotor (mechanical) 
cycle. The flux produced by a given winding (say B-B') is always 
perpendicular to the given winding in the direction determined by the 
direction of current flow in the winding, as shown in FIG. 1. This 
characteristic of course, is the same for that described for the DC and AC 
brushless motors. 
If a permanent magnet rotor 12 is inserted in the center of the two sets of 
stator windings of FIG. 2, and the two windings are energized with stator 
flux of the A-A' phase equal to 1 P.U. current and stator flux of the B-B' 
phase equal to zero P.U. current the rotor will line up with the resultant 
stator field. The motor will exhibit a "Zero Torque" angle between the 
permanent magnet rotor flux and electrically excited field flux of the 
stator. If the stator field flux is "rotated" by a given angle away from 
the rotor as shown in FIG. 3, a mechanical force will be generated in the 
direction towards the stator flux position. The amount of force imposed on 
the rotor by the stator flux field is proportional to the component of the 
stator flux perpendicular to the rotor. In other words, a stator flux 
torque angle, introduced 90 degrees perpendicular to the rotor, produces 
maximum torque. 
Arbitrary torque angles of 45, 90 and 150 degrees are shown in FIG. 3. The 
torque produced by these angles is proportional to the perpendicular 
component (Cosine component) of these angles. 
The stator flux can be made to revolve around the two pole sets A-A' and 
B-B' a full 360 degrees by sinusoidally varying the current in Phase A and 
B at a constant 90 degree separation with respect to each other (i.e., 
phase A is sine, phase B is cosine). This is not unlike the revolving 
stator flux of the AC brushless machine. In this example, three winding 
sets (A,B, and C) are used instead of two. A micro stepping translator 
controller for supplying current to a stepping motor is described in my 
U.S. Pat. No. 4,652,806. 
When a stepping motor controlled by a micro stepping translator (as shown 
in my U.S. Pat. No. 4,652,806) is run in the "open loop" mode, the 
permanent magnet rotor "follows" the revolving stator flux generated by 
the phase A and B sinusoidal currents. The torque angle (the angle between 
the rotor flux and the stator flux) is self determining. In other words, 
the angle generated is a function of the load on the rotor shaft. As the 
load increases, the angle becomes greater. 
In the open loop mode, the torque angle can never exceed 90 degrees if the 
maximum load on the rotor is constant starting from zero velocity. This 
fact should be noted in that this limitation is the main cause of motor 
stall when the motor is run in the open loop mode. Closed loop control of 
stepper motors is disclosed in Lander et al. U.S. Pat. No. 3,863,118. 
As already noted, there is a method for electronically determining the 
rotor position of a three phase AC brushless motor using a resolver. A 
similar method can be applied to the stepping motor in determining the 
relationship between stator phase current and rotor position. The only 
difference is that two phase sinusoidal currents are emulated instead of 
three phase currents. 
From previous discussions, it is noted that the torque produced on the 
rotor shaft is a function of the perpendicular component of the flux 
produced by the stator (assuming the rotor permanent magnet flux is 
constant). Thus, for a given level of stator flux (produced by a given 
level of stator current in Phases A-A' and B-B'), generated torque is 
equal to the COS (90-.alpha.) where .alpha. is the torque angle. 
The stepping motor was originally developed for "open loop" motion control. 
In turn, traditional stepping motor drives were capable of only "full" and 
"half" step current control (i.e., phase windings could only be turned on 
and off at a predetermined current, a concept not too different from the 
"six step" control discussed earlier). Thus, the number of poles were 
required to be high (typically 50) so that relatively small incremental 
angular steps could be achieved. Micro stepping drive technology soon 
emerged providing the capability of incrementally varying the phase 
currents in a sinusoidal fashion. However, the basic characteristic of the 
stepping motor has not changed. Thus, if a 90 degree torque angle was 
chosen and a torque versus speed measurement was made on the motor for a 
fixed stator current, the resultant plot would look no different than a 
plot of the motor taken under traditional open loop control run with the 
same stator current. 
Remembering the basic motor premise that back EMF voltage is a function of 
motor shaft RPM, it can be seen that the larger the torque angle, the 
lower the required stator winding terminal voltage (Vb-b') to generate a 
given back EMF voltage. Thus, increasing the torque angle above 90 degrees 
allows for higher speed operation. It should be remembered, however, that 
a price is paid in that torque produced for a given value of stator 
current drops with increasing torque angles above 90 degrees. Also, it 
should be noted that the motor inductance drops as the torque angle is 
increased. As a result, ripple and eddy current losses become a factor in 
operating efficiency. 
To initialize the torque angle relative to the position of the rotor, the 
position of the rotor with respect to the stator windings must first be 
determined. The previous discussion involving the use of a resolver for 
determining the "absolute" position of the rotor on an AC brushless motor 
could be similarly applied to the stepping motor. However, the component 
cost of a resolver based feedback control relative to the basic cost of a 
hybrid stepping motor is a bit unbalanced. The cost of a 300 oz-in 
stepping motor is typically $100.00. The component cost of a resolver and 
associated "resolver to digital" converter chip is typically $160.00. 
Clearly, the cost of a feedback mechanism that exceeds the drive mechanism 
by more than 50 percent is undesirable, especially when the labor cost 
required to mount and align the resolver has not even been included. 
The cost of providing feedback information to control the position of the 
torque angle can be greatly reduced by using a standard incremental 
encoder (optical-type encoders are the most common). The unit cost of an 
incremental optical encoder has been found to be as low as $25.00. Costs 
in converting the signals from an incremental encoder to position data are 
also low in cost, typically $10.00 to equal the digital output format 
produced by the "resolver to digital" converter. 
The incremental encoder utilizes two signals displaced in quadrature (i.e., 
one sine, the other cosine) to translate position change. Position is 
determined by noting the sequence in which the "sine" signal changes level 
with respect to the "cosine" (or vice versa), while at the same time 
accumulating the number of level changes with a counter. Another positive 
aspect of the incremental encoder besides its low price, is its relative 
accuracy. A typical optical encoder has a rotational position accuracy of 
.+-.3 arc-minutes. The typical rotational position accuracy of a resolver 
is .+-.6 arc-minutes. However, the aspect of relative ruggedness must not 
be ignored. The resolver can typically withstand higher mechanical 
vibrations and higher operation temperatures than an optical encoder. 
Since the incremental encoder can only transmit position in unit "steps" 
and thus, can only reflect "changes" in position, there is no way of 
determining its initial position relative to motor stator windings when 
the encoder is powered up. 
Remembering that torque angle control requires an "absolute" knowledge of 
the rotor position relative to induced stator flux, an alternate method is 
needed for initializing the torque angle using an incremental encoder. 
SUMMARY OF THE INVENTION 
Briefly, according to this invention, there is provided a closed loop motor 
control system for a motor with a plurality of poles and associated motor 
windings wherein the poles define full step motor output positions. The 
control system is of the type that assigns intermediated current values to 
the motor windings for commanding fine step positions of the motor output 
between motor poles. The control system comprises a motor output position 
encoder for generating an integral and fixed number of encoder pulses as 
the motor moves between any two motor poles. The pulses are equally spaced 
and at least some pulses correspond to fine step positions. A circuit 
which assigns intermediate current values comprises a counter for counting 
the encoder pulses, a function generator, for example a ROM for converting 
the count to digital sine and cosine values, analog-to-digital converter 
for converting the digital sine and cosine values to analog sine and 
cosine values, and a power amplifier for controlling electrical current to 
the motor windings associated with the poles in response to the analog 
sine and cosine values. A circuit is provided for setting the torque angle 
comprising means for adding or subtracting a torque angle value from the 
count applied to the function generator. An initializing circuit comprises 
circuit components for applying full step current values to motor windings 
for a time interval in which the motor output (rotor) is assumed to align 
with a full step position, components for zeroing the count in the counter 
and assigning the torque angle value. It is therefore unnecessary to align 
the encoder relative to the motor. 
Preferably, the output position encoder is a rotary encoder attached to a 
rotating output shaft of the motor. The encoder may be a linear encoder 
attached to a follower riding a screw mechanism attached to a rotating 
output shaft of the motor. The encoder may thus be a line encoder attached 
to a linear motor. 
Preferably, the counter and circuit components for setting the torque angle 
comprise a presettable up/down counter having a parallel output bus and a 
parallel input bus for presetting the count. In one embodiment the 
presettable counter is a programed logic array ( device). 
Preferably, the function generator and initializing circuit comprise a ROM 
having address inputs attached to the parallel output of the presettable 
up/down counter and address means connected to the parallel input bus of 
the up/down counter such that when the counter is being set to zero the 
ROM output corresponds to that required to bring the motor output to a 
full step position. 
In one specific embodiment of this invention, the circuit for assigning 
intermediate motor current positions comprises a source of a multiplexing 
pulse applied to the function generator and switches at the output of the 
analog-to-digital converter to provide multiplexed sine and cosine values. 
Preferably, the analog-to-digital converter comprises a multiplying 
analog-to-digital converter whenever the multiplying input may be an 
analog signal level corresponding to the motor current level command. 
The motor control system may comprise a microprocessor having an input port 
for receiving the output of a counter clocked by the encoder pulses, an 
output port for a parallel bus upon which the value of the torque angle 
can be placed, and an output port connected to a buffer attached to an 
analog-to-digital converter for defining an analog current command.

DESCRIPTION OF THE PREFERRED EMBODIMENTS 
Consider the simplified stepping motor diagram of FIG. 4. If a stator flux 
field is generated by inducing a 1 per unit (PU) current in stator winding 
A-A' (winding B--B' has zero current) a resulting stator flux vector would 
be generated as shown in FIG. 4. The permanent magnet rotor would "align" 
itself with the stator flux vector. This, or course, assumes that the 
rotor shaft is unimpeded or is able to drive a connected load to the 
position of the stator flux. 
If the motor is a standard 50 pole stepping motor (which is the assumption 
to be made hereafter unless otherwise stated), the rotor would move a 
maximum of 1.8 degrees to align itself with the stator flux. Since the 
position of the stator flux vector is "known" by the controller (which is 
inducing the current in the stator winding B-B' to generate said stator 
flux vector), then the same controller, knowing the step resolution of the 
attached encoder, can determine the prescribed torque angle. 
FIG. 4 also shows the torque angle "locked" at 90 degrees. Note that the 
initialization mode illustrated in FIG. 4 uses no marker reference. 
Initialization is done strictly on the assumption that the rotor aligns 
itself to an induced stator flux vector. This alignment is almost 
guaranteed when considering the relatively large amount of torque 
generated by the stepping motor per unit of induced stator current. 
A simplified diagram of a stepping motor with an incremental encoder 
interface is shown in FIG. 5. A "square" wave type encoder is assumed. 
That is, the sine and cosine signals of the encoder are square waves 
displaced 90 degrees with respect to each other. 
The sine and cosine signals are synchronized with a 1 MHz system clock to 
produce "UP" (up) or "DN" (down) pulses relative to the sequence in which 
the incoming sine and cosine signals change level states. 
The translation technique described above can be implemented in a single 
Programmable Array Logic device (). The Boolean equation for 
translation of the encoder input signals to up/down output pulses is shown 
below. A "times four" (.times.4) translation is assumed. That is, four 
output pulses (either up or down, depending on encoder direction) will be 
generated for each full Sin/Cos cycle. The specific example shown below is 
for type "16R4". This is labeled M1 in FIG. 6. 
______________________________________ 
BOOLEAN EQUATION FOR 
M1 OPERATING IN "X4"MODE 
EQUATION NOMENCLATURE 
______________________________________ 
/CCWFB = B0*B1*/A0*A1 
+ /B0*/B1*A0*/A1 
+ A0*A1*B0*/B1 * - "AND" Function 
"OR" Function*B1 + 
/CWFB = B0*B1*A0*/A1 
+ /B0*/B1*/A0*A1 
+ A0*A1*/B0*B1 / - Inverse of input 
+ /A0*/A1*B0*/B1 or output 
definition. 
/B1: = /SIN 
/B0: = /B1 : - Output "True" on 
/A1: = /COS next clock change 
/A0: = /A1 (1 MHz Clock.) 
______________________________________ 
The actual circuit needed for controlling the torque angle is illustrated 
in FIG. 6. The circuit of FIG. 6 is composed of the following components. 
A programmable logic array M1, type 16R4, is used to convert the SIN and 
COS encoder signals to CW and CCW feedback pulses already described. A 
programmable logic array M4, type 20.times.8, is used as an "up/down" 
counter to convert the CW and CCW feedback pulses into a digital value 
representing the absolute position of the rotor. Included with these 
possible angles are the "Initialization" torque angle illustrated in FIG. 
4. 
A programmable read only memory M2 (type 27128) is used to encode the 
digital position produced by M1 into information for emulating digital SIN 
or COS current command signals. The information presented at the output of 
the PROM is "multiplexed". These multiplexed current commands are 
ultimately used by a power amplifier as control signals for regulating 
current in the stator windings of the stepping motor. A four quadrant, 
multiplying digital to analog converter M3 transposes the multiplexed 
digital SIN and COS information provided by M2 into multiplexed analog SIN 
and COS signals. Components Op1, Op2, Op3, SW1, SW2, SW3 are used to 
"de-multiplex" the SIN and COS information presented by M3 into separate 
SIN and COS current command signals. Comparator CMP1 is used to detect the 
polarity of the CURRENT COMMAND signal. Decoding current command polarity 
is needed in order to determine which torque angle vector to apply to the 
motor stator. (i.e., the CCW or CW torque angle.) 
The circuit illustrated in FIG. 6 can implement torque angle control using 
virtually any encoder resolution. Since the position emulating circuits Ml 
and M2 are programmable, encoders ranging from a few hundred "lines" per 
revolution up to many thousands of "lines" per revolution can be used. The 
maximum resolution of the encoder is limited only by the counting range of 
Ml and the data storage range of M2. 
The circuit configuration of FIG. 6 has a practical encoder resolution 
range of between 200 and 2000 lines per resolution. With M1 configured for 
operation in .times.4 mode, this translates into an effective resolution 
of between 800 and 8000 lines (or steps) per revolution. 
The nature of the circuit of FIG. 8 dictates that the selected resolution 
be evenly divisible by the pole count of the motor. In other words, for 
this circuit to be used with a standard 1.8 degree stepping motor, the 
encoder resolution must be evenly divisible by 50. 
Absolute position emulation is accomplished with device M4. An example 
equation for M4 is shown below for an effective encoder resolution of 1000 
lines per revolution encoded in the .times.4 (times 4) mode discussed 
above. As was previously mentioned, a 50 pole stepping motor is assumed. 
BOOLEAN EQUATION FOR M4 OPERATING IN 4000 STEP/REV. 
MODE 
______________________________________ 
BOOLEAN EQUATION FOR M4 
OPERTING IN 4000 STEP/REV. MODE 
______________________________________ 
/Q7: = NEEDED FOR 4000 
STEP RESOLUTION) 
/Q6: = /Q6*UP*SET 
+ /Q6*/UP*A*SET 
:+:/Q5*/Q4*/Q3*/Q2*/Q1*/ 
Q0*/UP*A*SET 
+ Q5*Q4*Q3*Q2*Q1*Q0*/ 
DN*SET 
/Q5: = /Q5*UP*SET 
+ /Q5*/UP*A*SET 
:+:/Q4*/Q3*/Q2*/Q1*/Q0*/ 
UP*A*SET 
+ Q4*Q3*Q2*Q1*Q0*/DN*A*SET 
/Q4: = /Q4*UP*SET 
+ /Q4*/UP*A*SET 
:+:/Q3*/Q2*/Q1*/Q0*/ 
UP*A*SET 
+ Q3*Q2*Q1*Q0*/DN*A*SET 
/Q3: = /Q3*UP*SET 
+ /Q3*/UP*A*SET 
:+:/Q2*/Q1*/Q0*/UP*A*SET 
+ Q2*Q1*Q0/DN*SET 
/Q2: = /Q2*UP*SET 
+ /Q2*/UP*A*SET 
:+:/Q1*/Q0*/UP*A*SET 
+ Q1*Q0*/DN*SET 
/Q1: = /Q1*UP*SET 
+ /Q1*/UP*A*SET 
:+:/Q0*/UP*A*SET 
EQUATION 
NOMENCLATURE 
+ Q0*/DN*SET 
:+: - EXCLUSIVE 
"OR" FUNCTION. 
/Q0: = /Q0*UP*SET 
+ /Q*/UP*A*SET 
:+:/UP*A*SET 
+ /DN*SET 
/A = /Q6*Q5*Q4*/Q3*/Q2*/Q1*/ 
Q0*/UP 
+ Q6*Q5*Q4*Q3*Q2*Q1*Q0* 
DN 
/SET = /A13*/A12*/A11*/A10 
______________________________________ 
The programmable read only component (PROM) M2 of FIG. 6 can be of any 
storage size that translate a given address into a one byte (8 bit) output 
segment. Eight bits of (signed) current command resolution (either for SIN 
or COS) is more than adequate when emulating a current command at a 
maximum of 160 steps per electrical cycle (which is 8000 steps per 
revolution with a 50 pole stepping motor). 
The TORQUE ANGLE SELECTION inputs of PROM M2 are provided for selecting one 
of sixteen possible operating torque angles. The mapping equations for 
programming PROM M2 are shown below. The equations below are formulated 
for operation at 4000 steps per revolution as was the case with M4 
equation above. 
MAPPING EQUATIONS OF PROM M2 FOR TORQUE ANGLE SELECTION 
For The Range Of L=176 To 255 (multiplexing signal, A8=0); 
SIN COMMAND=127*SIN[(255-L)/79*(2.pi.+N:M)] 
For The Range Of L=432 To 511 (multiplexing signal, A8=1); 
COS COMMAND=127*COS[(511-L)/79*(2.pi.+N:M)] 
The SIN COMMAND and COS COMMAND terms of the equation shown above represent 
the magnitude (in decimal form) of the multiplexed digital output byte D0 
through D7 of PROM M2 (D7 represents the "sign" bit). 
Variable "L" denotes the output counting stage Q0 through Q7 of counter 
M4 in decimal format ( equations for M1 described earlier). Note that 
Q0 through Q7 of M4 are inverted outputs. Thus, variable "L" denoted in 
the equations above is represented in one's complement format (i.e., 0=255 
and 255=0). 
Variable "N:M" denotes the torque angle selector. This variable is made up 
of concatenated terms "N" and "M". Term "N" (address bit A9) represents 
the current command signal polarity. Term "M" (address bits A10, A11, A12 
and A13) of M2 represents the absolute torque angle (angles 
.THETA.-.alpha. or -(.THETA.-.alpha.)). The torque angle direction is 
.THETA.-.alpha. relative to the rotor, if address bit A9 is logic high. 
The torque angle direction is -(.THETA.-.alpha.) relative to the rotor if 
address bit A9 is logic low. 
The "Initialization" torque angle is selected by setting term "M" (address 
bits A10, A11, A12, A13) to all zeroes (logic low). These bits are also 
fed into device M4 (described earlier). Referring back to the Boolean 
equation for M4, note that with bits A10 through A13 set logic low, 
the set function is initialized and output signals Q0 through Q7 are 
preset to logic high. This is the initial counting state for M4. The 
output of PROM M2 for the initialization mode reduces to the following 
output state. 
______________________________________ 
EQUATIONS OF PROM M2 FOR 
INITIALIZATION TORQUE ANGLE 
______________________________________ 
SIN COMMAND = SIN[0] 
COS COMMAND = COS[0] 
WHERE: M = 0 
N = "DON'T CARE" 
L = "DON'T CARE" 
______________________________________ 
When bit A10 through A13 are set to any other state (except of course all 
zero), counting is enabled for M4 and a given operation torque angle is 
selected. 
The SIN CURRENT COMMAND and COS CURRENT COMMAND are assigned to a linear or 
PWM drive amplifier. A suitable PWM drive current amplifier is disclosed 
in my U.S. Pat. No. 4,652,806 with reference to FIG. 5(b). 
A simplified diagram of a microprocessor based position loop controller is 
shown in FIG. 7. Inserted into this diagram is an outline of the torque 
angle circuit shown in FIG. 6. 
The basic microprocessor position loop interface consists of a counter for 
monitoring the "CW and CCW feedback" pulses generated by the torque angle 
control circuit. An output port is provided to control the "torque angle 
selector" inputs of the torque angle control circuit. 
A digital to analog converter (buffer) is provided to generate the analog 
"current command" signal. 
As was described, it is the "torque angle selector" signals that control 
the position of the torque angle flux. The flux position can be fixed or 
can be altered dynamically, as described below. 
It is the "current command" signal that specifically controls the magnitude 
of the torque angle flux if the flux vector (torque angle) is maintained 
in a constant position. If the torque angle position is altered 
"dynamically", then the magnitude of the flux is a function of both the 
current command signal and the torque angle selector. 
A block diagram of a microprocessor loop gain function that could be used 
to control absolute rotor position, as well as "dynamically" control the 
torque angle of the motor, is shown in FIG. 8. 
The loop function of FIG. 8 is a basic PID (Proportional, Integral, 
Derivative) position loop filter modified to control torque angle position 
as well as absolute rotor position. The terms Kp (proportional gain 
modifier), K.sub.i /S (integral gain modifier), and K.sub.d.sbsb.1 S 
(differential or damping gain modifier) are used to determine a net 
"current command" (or torque signal) which is relative to the error 
between the "Position command" and "CW/CCW feedback". 
The K.sub.d.sbsb.2 S term (referring to FIG. 8) is used specifically as a 
gain-modifying term for selection of a given torque angle (through the 
"torque angle selector" outputs), specified by the "Look up table" block. 
The K.sub.d.sbsb.2 S term provides information to the look up table 
relative to the rotor velocity (rotor velocity is determined by measuring 
the pulse count per unit time of the incoming CCW feedback signal). 
The K.sub.d.sbsb.2 S term must also provide information for "dynamic gain 
adjustment" of modifiers K.sub.p, K.sub.i, and K.sub.d.sbsb.2. Dynamic 
torque angle control can be visualized by referring to FIG. 9. Torque 
versus speed profiles for three "fixed" torque angles are shown. These 
curves are "normalized" to show the general torque/speed characteristics 
of a 50 pole stepping motor. 
The torque/speed profile for the fixed 90 degree torque angle setting is 
very similar to the 50 pole stepping motor running in the normal "open 
loop" mode. This is because the rotor of the stepping motor running open 
loop assumes, by nature, the 90 degree angle just before "drop out" 
occurs. 
Note that as the "fixed" torque angle is increased above 90 degrees, the 
torque/speed profile begins to "flatten". This characteristic is in 
agreement with the discussion earlier on torque angles set greater than 90 
degrees. If the torque angle/position control function of FIG. 8 was 
implemented, one could expect a "dynamic torque angle control" profile 
similar to that shown with a dashed line in FIG. 9. 
Dynamic torque angle control is cumbersome to implement, due to the fact 
that the general PID gain modifiers (K.sub.p, K.sub.i, K.sub.d.sbsb.2 of 
FIG. 8) must usually be changed "on the fly" (i.e., they must usually be 
altered instantaneously, relative to the rotor velocity). Fixed torque 
angle position control is much simpler because the Ki, Kp, and Kd1 
modifiers remain fixed. 
For torque angle control using an incremental optical encoder is not 
necessarily limited to "rotary" type encoders mounted on the rotor (shaft) 
of the stepping motor. FIG. 10 illustrates a method for determining 
position using an incremental linear encoder. The SIN and COS encoder 
output signals from the encoder are identical to the rotary type encoder 
discussed earlier. To emulate angular rotor position (for purposes of 
torque angle control), the "pitch" of screw mechanism must be such that 
the angular distance between consecutive poles of the motor be relative to 
an integral number of linear steps of the linear encoder. This "integral 
number" must abide by the same constraints as that discussed for the 
rotary type encoder. That is, the number of steps produced by the linear 
encoder for one full mechanical revolution of the rotor must be evenly 
divisible by the pole count of the motor. 
Having thus described my invention with the details and particularity 
required by the Patent Laws, what is claimed and desired protected by 
Letters Patent is set forth in the following claims.