_'_ S;_-C R- 1 91 _qO

©

©

DEPARTMENT OF MECHANICAL ENGINEERING & MECHANICS

COLLEGE OF ENGINEERING & TECHNOLOGY

OLD DOMINION UNIVERSITY

NORFOLK, VIRGINIA 23529

APPROACHES TO CONTROL OF THE LARGE ANGLE

MAGNETIC SUSPENSION TEST FIXTURE

By

Mehran Ghofrani, Graduate Research Assistant

Principal Investigator: Colin P. Britcher

Annual Progress Report

For the period November I, 19gi to October 31,

Prepared for

National Aeronautics and Space Administration

Langley Research Center

Hampton, Virginia 23681-2199

1992

'- 7" ' '

Under

Research Grant NAG-I-I056

Nelson J. Groom, Technical Monitor

GCD-Spacecraft Controls Branch

December 1992

o_

_D t,J

,0 u_ -t

| ,-- ,..4

e_ U ,4"

O- _" ,-4

O,

0

t_

L_

_J

OZ

I'- (-_ p- I

l

<_ rO •

v'_ Ir 3 ,-4 ..

LU C: O" _"

"r UJ {:: O, :_

OZuJ . 0

_ <:: _' )..

•_Ox E

er _ ,-w C)

•_u. Q

''_ j

i OrD

I 0 Z ¢' ,..-,
DEPARTMENT OF MECHANICAL ENGINEERING & MECHANICS

COLLEGE OF ENGINEERING & TECHNOLOGY

OLD DOMINION UNIVERSITY

NORFOLK, VIRGINIA 23529

APPROACHES TO CONTROL OF THE LARGE ANGLE

MAGNETIC SUSPENSION TEST FIXTURE

By

Mehran Ghofrani, Graduate Research Assistant

Principal Investigator: Colin P. Britcher

Annual Progress Report

For the period November 1, 1991 to October 31, 1992

Prepared for

National Aeronautics and Space Administration

Langley Research Center

Hampton, Virginia 23681-2199

Under

Research Grant NAG-I-lOS6

Nelson J. Groom, Technical Monitor

GCD-Spacecraft Controls Branch

Submitted by the

Old Dominion University Research Foundation

P.O, Box 6369

Norfolk, Virginia 23508-0369

December 1992
ABSTRACT

Approaches to Control

of

The Large Angle Magnetic Suspension Test Fixture

Mehran Ghofl'ani

Old Dominion University, 1992

Advisor: Dr. Colin P. Britcher

The Large Angle Magnetic Suspension Test Fixture is a five degree-offreedom system, developed and built at NASA Langley Research Center. It is

intended for study of control techniques in magnetic suspension systems with large

angular capabilities. In this study, steps have been taken to prove the system in

practice, using the existing hardware. A classical control approach, using dual

phase advance compensators, is applied in simulation and hardware. A single

decoupled degree-of-freedom of the system is stabilized and controlled in

simulation. The procedure is then employed for all five degrees-of-freedom. The

design and implementation of an analog and a digital controller arc described.

Results from simulation and the actual system axe compared and analyzed. The

ability of the system to sustain suspension over a large angular range has been

proven in hardwarc.
ACKNOWLEDGMENTS

This thesis is being submitted in lieu of a progress report for the research project

entitled, "Large Angle Magnetic Suspension Test Fixture," supported by the National

Aeronautics and Space Administration, research grant NAG-l-lOS6, Nelson J. Groom,

Guidance and Control Division, Spacecraft Controls Branch, is technical monitor.
TABLE OF CONTENTS

Page

LIST OF TABLES ......................................................................iii

LIST OF FIGURES ......................................................................iv

LIST OF SYMBOLS ......................................................................vi

Chapter

1. Introduction ........................................................................................... 1

2. The Large Angle Magnetic Suspension Test Fixture

2.1 Genera/Description ................................................................ 4

2.2 Thc Suspended Element .......................................................... 4

2.3 Position Sensors ....................................................................... 5

2.4 Coils and Power Amplifiers ..................................................... 7

3. System Modeling .................................................................................... 9

3.1 Nonlinear Plant Equations ...................................................... 9

3.1.1 Equations of Motion ..................................................... 11

3.1.2 Torques and Forces on The Magnetic Core .................... 13

3.1.3 System Equations ........................................................ 15

3.2 Linea_" Equations

3.2.1 Linearization of The System Modcl ............................... 16

3.2.2 Initial Conditions .......................................................... 19

3.3 Numerical Analysis ................................................................... 20

3.4 Coils and Powcr Amplifiers Modeling ........................................ 25

4. Compensator Design .......................................................................... ..... 28

4.1 Decoupled System Behavior ...................................................... 28

4.2 Dual Phase Advance Compensator .............................................. 32
4.3 Application of The DPA to All Five Degrees-of-Freedom ........... 33

4.4 Closed-Loop System Dynamics ................................................. 40

5. Analog Controller ................................................................................... 45

5.1 Sensor Decoupler ...................................................................... 45

5.2 Dual Phase Advance Compensator ........................................... 47

5.3 Mixer Stagc .............................................................................. 48

5.4 System Response ..................................................................... 48

6. Digital Controller .................................................................................... 56

6.1 Hardware Description ............................................................... 56

6.1.1 Analog to Digital Conversion ........................................ 57

6.1.2 Digital to Analog Conversion .......... ".............................. 57

6.1.3 Timer ........................................................................ :. 57

6.2 Discrete-Time Dual Phase Advance .......................................... 58

6.3 Program Algorithm ................................................................... 59

6.3.1 User Interface ............................................................... 60

6.3.2 Dual Phase Advance ..................................................... 60

6.3.3 Interrupt Service Routine ............................................. 60

6.4 System Response ...................................................................... 61

6.5 Large Angle Yaw Rotation ...................................................... 64

6.5.1 Thc Current Distribution Matrix ................................. 64

6.5.2 Initial Current Setting ................................................. 65

6.5.3 Mixer Switching Technique ........................................... 66

7. DISCUSSION ............................................................................................ 70

8. CONCLUSIONS ......................................................................................... 73

REFERENCES ............................................................................................... 75

APPENDICES

A. Circuit Diagrams ............................................................................. 78

B. Program Listings .............................................................................. 83
LIST OF TABLES

Table Page

2.1 Coil specification (with iron core) ......................................................... 7

3.1 Electromagnet fields and first-order gradients ...................................... 21

3.2 Electromagnet second-order gradients .................................................. 21

3.3 Open loop modes of the suspended element ......................................... 24

4.1 Stability limits of the LAMSTF with the DPA comperrsator ................ 40

...

111
LIST OF FIGURES

Figure Page

1.1 Single degree-of-freedom steel ball suspension ......................................... 2

2.1 The planar array coil configuration ......................................................... 5

2.2 A sketch of the sensor frame ................................................................... 6

3.1 The coordinate system of the LAMSTF ................................................... 10

3.2 The modes of the model ......................................................................... 24

3.3 Simplified amplifier and coil circuit diagram ' 25

4.1 Controller block diagram 29

4.2 Root locus of yaw degree-of-freedom with no compensation .................... 32

4.3 Bode plot of the lead compensator ......................................................... 34

4.4 Root locus of yaw with a single lead compensator ................................... 34

4.5 Root locus of yaw with DPA compensator .............................................. 35

4.6 Step response in yaw using the DPA compensator .................................. 35

4.7 Plant and controller block diagram ........................................................ 36

4.8 Closed loop poles of the plant ................................................................ 41

4.9 Simulation step responses ..................................................................... 42

5.1 Differential amplifier and sumnmr . ......................................................... 46

5.2 A typical analog DPA schematic diagram ............................................... 47

5.3 Current allocation (mixer) network schematic ........................................ 49

5.4 Photo of the LAMSTF during operation ................................................. 49

5.5 Closeup photo of the model while in suspension ...................................... 50

5.6 Analog controller step responses ...................................................... : ..... 50

5.7 Coupling among the dcgrces-of-freedom .................................................. 53

iv
61 6.1 Digital controller stepresponses..............................................................

6.2 Current trend in the five coils for a 360 ° yaw rotation ............................. 66

68 6.3 Demonstration of large angular rotation .................................................

v
LIST OF SYMBOLS

a, b, c, d, e

A, B

A,B

constants of the digital filter

state-space A and B matrices of the plant

state space matrices of the power amplifiers and coils combination

A and B matrices without 'W 2

MAc, %_c, CCc, _c state space system for five DPA compensators in parallel

Me, Be, Co, Be state space system for a DPA compensator

g

B i

Bij

[0B]

0g

dt

g

...¢

F

f

Gz

Gzp

g

gsensor

gl, g3

gave

magnetic field generated by the coils at the centroid of the core, T

magnetic field generated by the electromagnets, T

magnetic field component in i direction, T

magnetic field gradient (0B i / 0j), W/m

field gradient matrix, T/m

field gradient vector, T/m

sample rate of the digital controller

open loop plant eigcnvalues

force vector on the permanent magnetic core, N

force due to the electromagnets on the magnetic core, N

plant yaw degree-of-freedom transfer function

yaw transfer function with coil and amplifier

gravitational constaalt, m/s

row matrix containing the sensor gains, V/m

the gains of sensors one and three, V/m

average of sensors 1 and 3, or sensors 4 and 5, V/m

vi
gol

H

HDPA

H

f

ro

Io

IFI'IaX

Ii

Iy, Iz, Ic

[i]

[i]

Iyaw

K, k

[Ki]

[KB]

[K DI

Li

Lij

ILl

M

M_

mc

m ij

mijk

the decoupled gains for each degree-of-freedom, V/m, V/rad

phase advance compensator transfer function

dual phase advance compensator transfer function

angular momentum vector in core coordinates, kg-m2/s

torque vector in core coordinates, N-m

current vector containing the five coil current, A

zero position current vector, A

B x due to I'0

current at which fields and field gradients were calculated, A

current through coil i, A

moment of inertia about the 5' or _ axis, kg-m 2

moment of inertia matrix, kg-m 2

inverse of moment of inertia matrix

plant input current due to yaw, A

forward and feedback gain of the current amplifiers

row vector containing field component in i due to each coil

field matrix containing the field components due to each coil,

gradient matrix containing gradient components due to each coil

self inductance of coil i, Hen

mutual inductance between coil i and j

inductance matrix, Henries

core magnetization vector in core coordinates

core magnetization x component in the core coordinate

core's magnetization cross product matrix

mass of the suspended element, kg

interpolated mixer matrix element (i,j)

mixer matrix element (i,j) at yaw angle step j

vii
R i

T

T

[Tin]

[Tin] "1

Uk

V

2.

V

¥

Vi

VDi

20

X, y, Z

5, _', 2

resistance of coil i, I2

the period of the compensator's break frequency, s

torque vector in core coordinates, N-m

torque due to the electromagnets on the magnetic core, N-m

coordinate transformation matrix

inverse of the coordinate transformation matrix

compensator's discrete-time input at sample k

velocity vector of the suspended element, m/s

time derivative of velocity vector of the suspended element, m/s

volume of the magnetic core, m 3

voltage across coil i terminal, V

demand voltage to current amplifier i, V

constant matrix containing the core's specifications

state variable vector

state variables evaluated at zero position

inertial coordinate system

core coordinate system

Xb, Yb, Zb electromagnet coordinate system

Yk

V

9actual

8k

8i

2.

compensator's discrete time output

compensator break frequency ratio constant

gradient operator

actual yaw angle of the sensor frame, rads

yaw angle at calculated intervals, fads

angular position about i axis, fads

angular acceleration about i axis, rads/s 2

angular velocity vector in core coordinates, rads/s

time derivativc of velocity vector in core coordinates, rads/s 2

o,.

VIII
cross product matrix

angular velocity about i axis, rads/s

ix
CHAPTER1

INTRODUCTION

The concept of magnetic levitation and magnetic suspension is not new in

origin. Many successful attempts have been made throughout this century.

According to reference 1, Kemper suspended a mass of 210 kg in 1935.

Advancements in control systems and electronics have greatly increased the

interest and achievements in this area. The first practical actively controlled

magnetic suspension, built at the University of Virginia in 1937 [2], is the basis of

most modern magnetic suspension applications. Magnetic suspension can be

applied to many fields, some of which are contact-less magnetic bearings [3],

levitated trains [4], supports for wind tunnel models [5], and vibration isolation

[6].

In some literature the term "suspension" is used in situations where an object

is supported by magnetic forces from above, and the term "levitation" is used for

cases where the object is repelled from forces below. There axe cases where a

combination of the two may be employed. However, in this study the two terms

will be used interchangeably.

There are two major groups of applications of magnetic suspension, small gap

and large gap. The term "gap" refers to the ratio of distance between the

suspended element and the actuator to the actuator size. The two groups differ in

analysis methods. In a small gap magnetic suspension system, the field at the

surface of the actuator may be assumed uniform, and magnetic circuit theory may
be utilized [7]. A large gap magnetic suspension system may require a full threedimensional analysis of the magnetic field at the point of suspension [8]. The gap

can be as low as a fraction of amm in small gap applications and as large as

several meters in large gap systems. An example of a small gap application is

magnetic bearings, and of a large gap application is the wind tunnel support

systems. Here only large gap magnetic levitation is discussed.

A simple classical example of magnetic suspension is the case of a steel ball

suspended by an electromagnetic coil above it. As shown in figure 1.1, the bali's

weight is supported by the magnetic field generated by the current flowing

through the coil. This system is inherently unstable, therefore a_ active feedback

controller is necessary to stabilize the system. A simple optical sensor can be used

to detect the position of the steel ball, and the signal is fed back to the controller,

The first stage of the controller is usually a comparator, which compares the

actual position to tile desired position. The error from the comparator is passed

through some form of a lead compensator, to accommodate the lag due to the coil

and the mass of the ball. This produces a feedback signal based on the rate of the

error signal. The compensated signal is finally fed to a current power amplifier

which supplies the coil [9].

--k _[_ Compensator

Input

\ DCAmplitier

Amplifier Detector t Detector

Electromo, net

SteelBall

Light

Source

Figure 1.I- Single degree-of-freedom steel ball suspension

2
The example given above has only one degree-of-freedom but is

representative of the many complex systems possible. One such system is the

Large Angle Magnetic Suspension Test Fixture (LAMSTF). The LAMSTF is a

research apparatus developed at NASA Langley Research Center. It is designed

to control a suspended element in five degrees-of-freedom, with the capability of

full 360* rotation about its vertical axis. The technology is adoptable to

applications such as vibration isolation and accurate positioning systems [10].

In this phase of the research the primary goal is to make the presently

available hardware operational. This is a proof-of-concept step leading to later

studies of performance maximization [11]. After describing the available hardware

and its modeled dynamics, the steps leading to implementation of an analog and a

digital controller for LAMSTF are presented. In the final phase, the large angular

capability of this system is demonstrated in practice.

3
CHAPTER2

THE LARGE ANGLE MAGNETIC SUSPENSION TEST FIXTURE

2.1 General Description

The distinct design feature of LAMSTF is its "planar array" electromagnetic

coil arrangement. Five coils are mounted on the perimeter of a circle of about

13.77 cm radius, at a spacing of 72 ° apart, on a 1/2" thick, square aluminum

plate. All the coils are positioned with their axes parallel to the axis of the circle.

The aim of the design is to levitate an element, filled with permanent magnet

material, at a height of about 10 cm above the coils. A sketch of this

arrangement is shown in figure 2.1. Since there arc no electromagnets above, all

the suspension forces would be repulsive, and directed from below a horizontal

plane over the coils. The pure repulsive force suspension method is one of the

unusual features of this system [12][13]. The system would be required to control

the suspended element in five degrees-of-freedom, and this has required a

minimum of five electromagnetic actuator coils [14].

In this chapter the details of the plant arc described. The plant primarily

consists of the suspended element, the sensors, the coils, and tile power aanplifiers.

2.2 The Suspended Element

The suspended element is an aluminum tube about 5.32 cm long and 0.9525

cm outside diameter. The tube is filled with 16 wafers of Neodymium-Iron-Boron

(Nd-Fe-B) permanent magnet material. Each magnetic wafer is 0.7963 cm in

4
diameter and 0.3135 cm in thickness, having a magnetization of about

9.5493x 10-5 Aim. The wafersare arrangedin N-S-N-Ssequenceand are epoxied

into the aluminum tube, resulting in a total massof about 22.5grams. Using the

bifilar pendulum method, the moment of inertia of the model about its transverse

axis wasfound to be approximately 5.508x 10-6 kg.m2.

Z

1

2

x y

Figure 2.1-The planar array coil configuration

2.3 Position Sensors

The detection of the core's position is performed by five sets of infrared LEDs

and sensors. These LED-sensor pairs arc installed in two perpendicular planes

(vertical and horizontal), which allow detection of five degrees-of-freedom of the

core. The beams from the infraxed LEDs, which are incident on the sensors,

5
would be partially blockedby the suspendedelement. The relative position of tile

corecan then be determined from the amount of light received. This method is

common in wind tunnel magnetic suspensionapplications and has been quite

successful.

The LEDs and sensorspresently used are intended for fiber-optics. Their

advantagesare that they are compactand inexpensive. However,the beamsfrom

the LEDs have a dispersionof about 20*(included coneangle), which significantly

reducesthe amount of light receivedby the sensors.To collimate the beamsfrom

the LED's, miniature piano-convexlenseswere installed on the LEDs and sensors.

The lenses are secured in aluminum tubes which also act as shields to stray light.

The sensors and LEDs are all mounted on an aluminum framework which is

above the coil array. This framework has the ability to rotate about the vertical

axis a full 360*. The schematic diagram of the sensor arrangement is shown in

figure 2.2.

4 II! 3

1

Figure 2.2 A sketch of the sensor frame

6
2.4 Coils and Power Amplifiers

The currents through the coils are controlled by five switching power

amplifiers, capable of delivering a maximum of 30A continuous and 60A peak

level. The amplifiers, which are commercially purchased, have a switching

frequency of 22 KHz, and require a D.C. supply of 150 V. The amplifiers are

equipped with individual enable switches and output current read-outs. The

power amplifiers, their power supplies, and their supporting circuitry are housed

in an enclosed chassis. These amplifiers function in a voltage-to-current convertor

mode. Their response behavior and sensitivity are, to some degree, user

adjustable. The amplifiers are set to give a flat response and to have a gain of 3

A/V. The outputs of the amplifiers are directly connected to the coils via cables.

The electromagnetic coils are made of 509 turns of AWG 10 enameled copper

wire wound on bakelite spools, with soft iron cores. The windings on the coils are

covered with epoxy resin to reduce deformity due to high current forces. The

electrical characteristics of the coils has been measured as follows:

Resistance

Self Inductance

Mutual Inductance:

(adjacent)

(non-adjacent)

1.6 mH

0.37 mH

Table 2.1- Coil Specifications (with iron core)

The coils cannot adequately dissipate the thermal energy generated in them

due to their internal resistances. A 30 minute run of one coil at 15A, starting

7
from room temperature, resulted in temperature of about 1500F. To protect

against thermal runaway, each coil has been equipped with a temperature sensing

device, which is monitored by a set of five digital temperature controllers. These

controllers are of the OMEGA CNg000 series. The temperature controllers are

connected such that they can activate an alarm and disable the power amplifiers

at set temperatures. The temperature controllers are presently set to sound an

alarm at 150 ° F and to disable the amplifiers at 160" F.

8
CHAPTER3

SYSTEM MODELING

In order to study the behavior of the system, an accurate model of the plant

is necessary. The plant includes the dynamics of the suspended element, the coils,

and the power amplifiers. The mathematical model of the plant has been derived

in detail in reference 15, however a brief summary will be given here for

demonstration.

In general, magnetic systems are nonlinear [16]. After developing a nonlinear

model, a linearizing procedure is performed to simplify analysis and

implementation. This chapter first shows the basic steps in developing the

nonlinear plant model, after which linearization steps are presented. Numerical

results axe provided later which arc then used to study the actual plant's

dynamics.

3.1 Nonlinear Plant Equations

A set of coordinate systems needs to be defined in order to model the motions

of the core and analyze its dynamics. Figure 3.1 illustrates the coordinate system

arrangement defined for this system. An orthogonal right-handed coordinate

system is attached to the core and is referred to as the core coordinate system. Its

components are denoted as _, S_, and 2. The origin of the core coordinate system

is placed at the centroid of the core, with its $c axis along the axis of the core.

The inertial coordinate system is denoted by x, y, and z; it is fixed with respect to

9
the coils. The x axis of the inertial system always intersects the axis of coil one.

The core coordinates are initially coincident with the inertial coordinates.

×b

b1

J

I

I

Figure 3.1- The coordinate systems of the LAMSTF

As the core moves from the zero position, the core coordinates deviate from the

inertial coordinates. In order to locate the coils with respect to the inertial

system, a third coordinate system is attached to the coil array at a distance h

below the inertial coordinate system. The components of this system are denoted

as Xb, Yb, and zb. The x b and Yb axes arc parallel to x and y axes of the inertial

system, respectively, and the zb is coincident with the z [15].

Using traditional aircraft dynamics terminology, the motions of the core are

defined as follows: Roll is rotation about the 2 axis. Yaw is rotation about the

axis; Pitch is rotation about the p axis. The linear motions are axial, side, and

vertical denoted by x, y, and z.

definition.

Tile sign convention follows the right-hand rule

10
One of the assumptions made in the design of this system is that the model

would initially suspend at zero inertial coordinate position. However, the system

should later be capable of tracking the core through a 360* rotation about the z

axis. Since the core's magnetization is in the direction of its R axis, there would

be no control of roll motion. The motions in all other degrees-of-freedom, axial,

side, vertical, and pitch, are kept to very small amounts.

3.1.1 Equations of Motion

The assumptions used to derive the equations of motion for the core are that

the core is a rigid body, the core has negligible product of inertia, and that the

core has no rolling motion. Therefore, the inertia matrix 'for the core would be a

3 x 3 diagonal matrix with Iy = I z = I c [15].

Ix 0 0 1

[I]= 0 Ic 0

0 0 Ic

Using the general angular momentum equation

= [I] _ (3.1)

The torque on the suspended element can then be written as follows:

T =H = [I]_ +_ x ([I]_) (3.2)

By performing some mathematical manipulations the above equation can

rewritten as below:

11

be
T = [I]_ + [_] [I] (3.3)

The term _] is a skew-symmetric cross product matrix shown in equation 3.4.

= f_} 0 12}

fl_ _} 0

(3.4)

Solving equation 3.3 for angular acceleration the following equation is obtained:

_= [I]-1 ( _ -[ill [I] _) (3.5)

Since there is no rolling motion, equation 3.5 simplifies to the following:

(3.6)

The force on the core can likewise be determined.

the force can bc written as below:

_., "_ _.

F =m e(v +[fi]V)

In the coordinates of the core

(3.7)

Solving for the acceleration one can obtain the following:

(3.s)

12
3.1.2 Torques and Forces on the Magnetic Core

The suspended element is subject to forces and torques generated from the

interaction of the magnetic field from the coils and the field from the permanent

magnet core. The governing equations for torque and force are shown in

equations 3.9 and equation 3.10 respectively [15]:

= f (_ x t3)dV (3.9)

V

/ (fi V)I dV (3.10)

Y

Where the gradient operator is defined as:

(3.11)

The magnetization of the core can be assumed to be uniform over t_he volume of

the core. The size of the core compared to its distance to the coils and tile coils

themselves is small. It is assumed that the fields in the region of the core are

linear functions of position. Therefore, the gradients of the fields are constants

over the volume of the core. The integrals in equations 3.9 and 3.10 can now be

approximated as the core's volume multiplied by the relevant integrand,

evaluated at the centroid of the core. The resulting equations are shown below:

"£ ___V(I_ x I30) (3.12)

Similarly the force equation reduces to the following:

1_ __ V (1_ V) I30 (3.13)

13
The dot product in equation 3.13 produces a scalar. Combining this result with

the flux density vector t3, using tensor algebra, the above equation can be written

as follows:

where

and where

1_ = ¥ [0B] _1 (3.14)

f 1

Bxx Bxy Bxz

[0B ] = By x Byy By z (3.15)

_Bzx Bzy Bzz

0B i

Bij =

From Maxwell's equation, _' x t3 = 0, the above matrix must be symmetrical in

the region of the core. Further, applying the identity _7 • t3 = 0, the diagonal

terms of the matrix must be zeros.

In the above equatioxas, M is represented with respect to the core coordinates

and 13 is reprcsentcd with respect to the inertial coordinates. This mismatch in

the coordinate systems can bc resolved by transforming B to the core coordinate

system, using a transformation matrix Tm.

= V [1% [Tm] 13 (3.1G)

where

= ¥ [Tm] [0B] [Tin] -1 1_

W Y/l-'-

cosO z sinO z 0 1

"sis Oz c°SOZo 01

14

(3.17)

(3.18)
3.1.3 System Equations

The next step in developing the plant model is to combine the equations of

motion with the torque and force equations. Substituting the torque equation into

the angular acceleration equation, the following result is obtained:

1 ¥ [lVl] [Tin] g (3.19)

Similarly, substituting the force equation into the linear acceleration equation

results in the following:

?m__e_ = 1 ¥ [Tm] [0B] [Tm] -1 1_" (3.2o)

Equations 3.19 and 3.20 are the basic equations of motion for the core in core

coordinates, neglecting torques and forces due to disturbances. The variable

inputs in these equations are the field intensity vector I] and the field intensity

gradient matrix [0B]. Since the core is held fixed at its operating point with only

small displacements, the assumption ca_l bc made that the field components and

their gradients are only functions of coil currents. The field intensity vector can

now be represented by a linear combination of the coil currents [15].

t] 1 [Ks] f

= im x (3.21)

Each column in [KB] corresponds to a coil and contains field components produced

by that coil at a maximum current Imax. The vcctor I" contain the coil current.

The same arrangement can be made for the gradients, by arra_lging the field

gradient's three columns into one column and representing it as vector.

15
In equation 3.22 [KoB] contains field gradients in its columns at maximum

current, for each coil. The values in the two matrices [KB] and [KoB] are

determined using a magnctic field analysissoftwarewhich uses the finite clement

method for the given configuration[17].

0B = l__L_ [KoB ] f

Imax

(3.22)

The equations of motion can now be integrated to relate the input currents to

the core position. However, the above model is nonlinear due to the coordinate

transformations involved. A linearizing technique should be employed to simplify

analysis and implementation.

3.2.1 Linearization of thc systcm modcl

The system can now be linearized and put in a state space format for

analysis. The details of the lincarization of tile plant model can bc found in

reference 18, however a summary of the steps involved is presented herc. Onc can

simplify the equations of motion by using small angle approximation. This is

based on the assumption that displacement anglcs about the _ and y axis are

small; this results in sin0 "_ 0 and cos0 _ 1. With these approximations the torque

and force equations can be simplified to the following equations.

Ty =V M_ (-0yBz-Bz)

T$ =V M_ (-0 zB x-By)

F-2 = V M-£ ( Bxx + 2 0 z Bxy - 2 0y Bxz ) + mc Oy g

16

(3.23)

(3.24)

(3.25)
FT = V _z (-OzBzz4" Bzy-t- 0 zByy-OyByz) (3.26)

Fz = V M-i ( Oy Bxx + Bx_ + O_ Byz - Oy Bz_ ) (3.27)

The above torque and force equations can be expressed in terms of angular

and linear accelerations. As developed earlier, the fields and field gradients can be

represented as functions of coil currents only. This will result in a set of nonlinear

differential equations. These cquations represent a system with currents as input

and core position rates as output. A set of relevant variables :X can be defined,

3..

and X can be expressed as a function of X and I, shown in equations 3.28 and

3.29, respectively.

_T ._ Lfly fi_.ey o_.W_ My W-_x y z J (3.28)

(3.29)

The method used here to lincarize the system is the Taylor series expansion about

a fixed point. Using only thc first order tcrms of the series and subtracting the

initial operating point [18] onc obtains the following:

where

_X = A _:X + B 6I (3.30)

A=W 2

B='W, 2

af(_, _)

0R

0 f(_, _)

0I

X0_I0

Xo,Io

(3.31)

(3.32)

17
'W2 is a diagonalmatrix with moment of inertia Ic and core mass mc arranged in

its diagonal.

54?2 =

B

¥MI 0 ... ... 0

Ic

VM_ .

0 ic ..

• ".. 1.

1

YMx

m C

VMx

mc

¥Mx

In C

°., "

• ".. 1 0

• .. 0 1 .,°

m

(3.33)

Matrix A can be expanded and simplified to the following:

A='W 2

0 0 -Bx 0 000

00 0 -B x 00 0

10 0 0 000

01 0 0 000

0 0 (.mcg -2Bxx) 2Bxy 0 00

V M_:

0 0 By z (Byy-Bxx) 0 0 0

0 0 (Bxx-Bzz ) By z 0 0 0

00 0 0 100

00 0 0 010

00 0 0 001

-Bxz

-Byz

0

0

B(xx)x

B(xy)x

B(xz)x

0

0

0

18

-Byz

Byy

0

0

B(xx)y

B(xy)y

B(xz)y

0

0

0

-Bzz

Byz

0

0

B(xx)z

B(xy)z

B(xz)z

0

0

0

(3.34)
Following somemanipulations asin [18], assumingthat the coil currents are

not affected by the coremovementsand neglectingsmall terms, the B matrix can

simplified to the following:

B = 1 W-2

-Kz1

Ky I

Kxx 1

Kxy 1

Uxz 1

"Kz 2 -Kz a -Kz 4 -Kz s

Ky 2 Ky 3 Ky 4 Ky 5

"'" 0 "''

"*° 0 "*"

Kxx 2 Kxx a Kxx 4 Kxx 5

Kxy 2 Kxy a Kxy 4 Kxy 5

Kxz 2 Kxz 3 Kxz 4 Kxzs

''* 0 "''

"'* 0 "'"

°°" O "°°

(3.35)

The system model is now linearized. Using the state variables defined in

equation 3.28 and the above A and B matrices, the state-space represcntation of

the system can now bc analyzed.

3.2.2 Initial Condition

In the absence of gravitation and disturbances the core would suspend at a

defined zero position, in this case at a height of 10 cm above the top of the coils

over the center of the array, with no current through the coils. However, in order

to compensate for the weight of the model, a sct of steady currents should be

supplied to the coils. This results in a constant force F_. shown below, with all

other forces and torques equal to zero.

F_. = me g (3.36)

19
The aboveconditionswill results in the following:

By=B z=Bxx=Bxy=0 (3.37)

mc g

Bxz = -V M_ (3.38)

From equation 3.35, the initial current can be calculated using the following:

I0 = Imax

- _ "1 D .

[Ky]] By

[Kz ][ Bz

[Kxx] [ Bxx

[Kxy] [ Bxy

[Kxz]I nx,

(3.39)

Note that the the only non-zero term in the B matrix is Bxz. Since the K matrix

is square with non-zero determinant, and is therefore invertible, I0 can readily be

determined.

3.3 Numerical Analysis

The numerical values for the magnetic field intensity and its gradients at the

point of suspension can be calculated in two steps. The Biot-Savart law may be

used to determine the fields and field gradients due to the currents in the coils

with no iron core present [19]. A finite difference method can then be applied to

the result to account for the effect of the iron cores, through an iterative process.

To solve the equations involved in this method would be very tedious. A

magnetic field analysis software, based on finite element and finite difference

methods, has been used to determine the field intensity and its gradients at the

point of interest [6]. Assuming a constant current of 10A through the coils, the

20
following table, containing field intensities, their first and secondgradients, has

beendetermined.

Coil

1

2

3

4

5

Bx,

T

"0.00231

0.00071

I-0.00187

-0.00187

0.00071

By,

T

0

0.00220

0.00136

_0.00136

-0.00220

n Z ,

T

-0.00094

Bxx,

T/m

0.02179

-0.01503

0.00772

0.00772

-0.01503

Bxy, Bxz,

T/m T/m

0 -0.02723

0.01196 -0.02203

-0.01936 0.02203

0.01936 0.02203

-0.01936 .0.00841

Byy,

T/m

-0.0189

0.01790

-0.00485

-0.00485

-0.0179

Byz, Bzz,

T/m T/m

0 -0.00287

-0.02590 :

-0.01600

0.01600

0.02590

Table 3.1- Electromagnet fields and first-order gradients

Coil

B(xx)x,

T/m/m

0.03434

-0.18276

0.16559

0.16559

-0.18276

B(xy)x,

T/m/m

0

-0.14560

0.13733

-0.13733

0.14560

B(xz)x,

T/m/m

-0.53466

0.16371

-0.26790

-0.26790

0.16371

B(xy)y'

W/m/m

-0.21916

-0.11938

0.22896

0.22896

-0.11938

B(xy)z,

T/m/m

0

0.08735

-0.14134

0.14134

-0.08735

B(xz)z'

T/m/m

0.00254

0.00078

-0.00205

-0.00205

0.00078

Table 3.2 - Electromagnet second-order gradients

21
The matrices A, fl_ and W 2 are shown below after numerical substitution.

0 0 7.846e-3

0 0 0

1 0 0

0 1 0

0 0 -9.25e-2

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0 0 -9.25e-2 0 0

7.846e-3 0 0 0 0 0 0

0 000 0 0 0

0 000 0 0 0

0 0 0 0 4.710e-I 0-2.366e-4

0 0 0 0 0 9.015e-i 0

0 0 0 0 -2.366e-4 0 -8.614e-3

0 100 0 0 0

0 010 0 0 0

0 001 0 0 0

(3.40)

4.0710ei

0

0

0

4.0710el 4.0710ei 4.0710ei 4.0710ei

9.5278el 5.8899el -5.8899el -9.5278ei

0 0 0 0

0 0 0 0

2.3101e-I -1.5935e-i 8.1846e-2 8.1846e-2 -1.593e-1

0 1.268e-1 -2.0525e-1 2.0525e-I -1.268e-i

-2.8869e-1 -8.9161e-2 2.3356e-1 2.3356e-I -8.9161e-2

0 0 0 0 0

0 0 0 0 0

0 0 0 0 0

(3.41)

where

and

A=W2A

_ 1

B - i--_ax W2 %

22
Using the specificationsof the core,W2 is asfollows:

,W2-

4.3308e5 0 ...... 0

0 4.3308e5 "•

: ".. 1

1.0602e2

1.0602e2

1.0602e2

°°° :

: ".. 1 0

0 ...... 0 1

B

(3.42)

The matrix A, which contains the dynamics of the open loop plant, has the

following eigenvalues.

59.2596 +

-59.2596 +

0 + 7.971_

0- 7.971_

0 + 0.955_

o - 0.955 

58.2942 +

-58.2942 +

9.7762 +

-9.7762 +

(3.43)

There axe five pairs of eigenvalues, each of which can be associated with one or

two degrees of freedom. As can be seen, three of these pairs axe unstable, and the

other two are marginally stable. Thc modes of the system are listed in table 3.3.

23
Mode #

1

2

3

4

5

Eigenvalues Stability Degreeof Freedorr

+ 59.26 rad/s

+ 7.972 rad/s

:t=58.29 rad/s

+ 0.956 rad/s

d: 9.776 rad/s

Unstable

Stable Oscillatory

Unstable

Stable Oscillatory

Unstable

x, 0y (Axial, Pitch)

x, 0y (Axial, Pitch)

0z (Yaw rotation)

z (Vertical motion)

y ( Lateral motion)

Table 3.3 Open loop modes of the suspended element

The two mosg unstable eigenvalue pairs, modes one and three, are referred to

as the "compass needle" modes; this represents the cores tendency to turn and

align its ends with the unlike polarities. A sketch of the modes, in relation to the

core's motions is shown in figure 3.2.

z

z

"Compass needle" modes {2. unstable) _-_l :_

Vertical translation (stable)

z

I

Axial- Pitch (stable)

z

Lateral translation (unstable)

Figure 3.2- The modes of the model

24
:3.4 Coils and Power Amplifiers Modeling

Up this point it was assumed that the coils were capable of producing the

magnetic field instantaneously. The coils are inductors, and inductors produce

lags in the system. The power amplifiers are constant current sources based on

their command input voltages; they are voltage to current converters. However,

they cannot produce instantaneous infinite power to compensate for the lag in the

coils. For an accurate model of the system, it is required to model the the coilamplifier block.

The basic circuit representation of an amplifier and a coil is shown in figure

3°3.

-\

R I

L

I

Figure 3.3- Simplified amplifier and coil circuit diagram

Simple circuit analysis will show that the coil terminal voltage can be represented

by the following equation:

V 1 = I 1 (R 1 +L 1 s)+I 2L12s+I 3Ll3s+I 4L14s+ 15L15s (3.44)

25
The amplifiers are represented as having an output current feedback.

the Kirchhoff's voltage law, V 1 can also be written as follows:

Applying

V 1 =K (VD1 - k I) (3.45)

Equating equations 3.44 and 3.45, the relation between the current demand input

to the amplifier to the coil current for coil one can be represented as:

I1

12

I L 1 L12LI3 L14 L15 J 13 =- (RI+ Kk) I 1 + KVD1 (3.46)

14

I5

Applying the same procedure to all five coils and amplifiers, the overall coilamplifier state-space model can bc written as follows:

I =A f+B_7 D (3.47)

Assuming the coils have identical resistances, the A

as follows:

= -(R + Kk)[L ]-I

and B matrices are defined

(3.48)

= K [L ]-1 (3.48)

Since Lij = Lji, [L] is symmetric.

adjacent neighboring coils. Due

inductances between all the adjacent coils axe equal. Therefore,

inductances between all the non-adjacent coils are also equal.

26

Every coil has two adjacent and two nonto the geometry of the array, the mutual

the mutual
ILl =

L1 L12 L13 L14 L15

L12 L2 L23 L24 L25

LI3 L23 L3 L34 L35

L14 L24 L34 L4 L45

L15 L25 L35 L45 L5

(3.49)

Numerical values for the coil parameters are given in table 2.1. To determine the

values for K and k, the D.C. gain and the break frequency of the amplifier/coil

combination is necessary. The D.C. gain is set to 3 A/V, and, from the frequency

response measurements, the break frequency is estimated to be about 180Hz.

This results in K=93.30 and k=0.325.

Substituting numerical values into equation 3.46, 'the state-space model

becomes:

-I1

12

13 =

14

_I5

D

-1138.2 62.34 10.10

62.34 -1138.2 62.34

10.10 62.34 -1138.2

10.10 10.10 62.34

62.34 10.10 10.10

10.10 62.34

10.10 10.10

62.34 10.10

-1138.2 62.34

62.34 -1137.7

a

II

12

13

14

15

+

3414.7 -187.0 -30.3 -30.3 -187.0

-187.0 3414.7 -187.0 -30.3 -30.3

-30.3 -187.0 3414.7 -187.0 -30.3

-30.3 -30.3 -187.0 3414.7 -187.0

-187.0 -30.3 -30.3 -187.0 3414.7

 vD;

IVD2

IVD3

I%4

LVD5

(3.50)

The analysis of the system without some form of CAD software would be

difficult, therefore the software MATLAB TM will be utilized extensively. The

state-space model for the coils and power supplies can be added to the system

state space using "SERIES" command in MATLAB.

27
CHAPTER4

Compensator Design

It was establishedin the previous chapter that the plant model is open-loop

unstable. Some feedback control technique must be employed in order to achieve

stable suspension. Several control schemes arc available to stabilizethe system.

Aside from the classicaltechniques, there are modern state feedback schemes such

as Linear Quadratic Gaussian and Linear Quadratic Regulator. However, in order

to prove the planar array concept, a simple and well-testedmethod, classicaldual

phase-advance compensator (DPA), was chosen first[20].The dual phase-advance

compensator technique has been successfullyused in many magnetic suspension

applications and is relatively simple to implement [21][22]. Once the system is

operational, other control schemes can be tried for their performance on this

system. In this phase of the research no great effort has been made to maximize

performance. The basic aim has bccn to make the system operational, and after

implementation in hardware, to compare the actual system's behavior to the

mathematical model. This chapter demonstrates some basic approach used to

design the compensators, and shows some step responses of the closed loop system.

4.1 Dccoupled System Behavior

The dccoupled motions of the suspended element can easily be deduced from

the sensor signals. This provides the required signals for five degrees-of-freedom,

which are x, y, z, By, and 8z (refer to figure 3.1). These signals can then be

28
processed through a set of five independent compensators and fcd back to position

command input comparators. The errors from these compaxators axe then used to

drive the current amplifiers. A block diagram is illustrated in figure 4.1.

S

E

N

S

O

R

1

3

Sensor

Decouplers Compensators

,

.

÷

Demand

Allocation

MIXER

STAGE

1

2

To

3 Power

Amps

4

5

Figure 4.1 Controller block diagram

Most magnetic suspension systems follow the same pattern of feedback and

control, however the "mixer" stage in figure 4.1 is fairly unusual. The coil

currents are not decoupled with respect to the degrees-of-freedom; each coil affects

more than one degree-of-fi'eedom. The decoupled position signals must be

converted to coil current demand signals to produce the desired magnetic fields.

This is done by lincax combination of the coil currents through a 5x5 mixing

matrix, also known as current allocation matrix, located just prior to the current

amplifier inputs. In chapter six, it will bc shown that, by switching through a

series of these mixing matrices,

in yaw.

the core would be made capable of 360" rotation

29
The application of the DPA compensator, like many other controller design

approaches, relies, to some extent, on previous knowledge of the application and

may involve some trial-and-error [23]. The DPA compensator is basically two

lead stages in cascade, and it is essentially a high-pass filter. In general, systems

using permanent magnets or electromagnets without current control are inherently

unstable [1] and have lag characteristics. They require an active control with

some method of lead compensation to increase their crossover frequency, and

hence the overall system's bandwidth [23].

The plant model is a multi-input multi-output system, and in some cases it

has coupled degrees-of-freedom. This makes analysis difficult using classical

methods. However, a study of only one degree-of-freedom can give some useful

information regarding the application of the dual phase-advance method to the

full system.

As described in the previous chapter, the pitch and yaw modes are the most

unstable of the five modes, and are referred to as the "compass-needle modes".

Out of these two compass-needle modes, pitch is coupled with the axial motion,

but yaw is fairly independent of other degrees-of-freedom. For simplicity yaw will

be used as a demonstration of the application of DPA compensator to this system.

Equation 3.24 describes the dynamics of yaw motion. This equation can be

written as following:

Oz V M x = I--£-(- + By) (4.1)

Since it was assumed that the fields can be expressed in terms of linear functions

of the coil currents, equation 4.1 can be written as:

VMx

0z = Ic Imax (" [KxJ I" 0z + [Ky] f )

3O

(4.2)
The above equation can be linearized about the operating point, using a

Taylor series expansion. Subtracting the linearization point, this results in the

following equation:

V Mx

0z -_ Ic Imax( [Kx] i"0 8z + 8% [KxJ r + [Ky] f) (4.3)

The assumption was that the core is at zero position, therefore 0z0= 0. The row

vector [KxJ can be combined with the current vectors I'0/Imax to form the scalar

I0. In order to represent the five input currents to the system as a single

command current, the row vector [KyJ is multiplied by the second column of the

mixer matrix shown in equation 4.18. The resulting transfer function of the above

equation can be represented as shown below:

8z 0.06 (4.4)

Gz - Iyaw - Ic s2 _ io

V Mx

Substituting numerical values into the above transfer function will produce the

following characteristic equation and transfer function:

s2-3.3982 x 103=0

2.3688 x 104 (4.5)

Gzp = (s + 58.294) (s - 58.294)

In order to properly represent the single degree-of-freedom, it is necessary to

include the lag due to the power amplifier and the coil responses. Through

experimental measurement, the break frequcncy of the amplifier-coil combination

has been found to bc about 1130.9 fads/see. The power amplifiers have'a D.C.

gain of 3 A/V. Neglecting the mutual inductances, the overall open-loop transfer

31
function can be representedas in equation 4.6. From the root locus of Gzp in

figure 4.2 , it can be seen that the closed-loopsystem is unstable for all gains.

Therefore,a compensatoris neededfor stability.

8.03662e7

'-'zp= (s + 58.294)(s - 58.294)( s + 1130.9) (4.6)

o

E

m

2OOO

1500

1000

50O

0

-5oo !

-1000

-1500

-2000

-2000

............................................................................................................ ;................... ;-..................... i .....................

.................... _...................... i...................... ;..................... ;.................... i..................... ._..................... i.....................

. ...._...................... _.................................... •............ :........ ÷ ..................... _.....................

.................... _..................... "...................... :..................... : .................... i..................... -_..................... : ....................

..................... _..................... i...................... ;..................... _.................... i...................... _..................... ;.....................

.................... i..................... !...................... i........................ i.................i.............

-- 1500 - ! 000 -500 0 500 1000 1500 2000

Reel Axis

Figure 4.2- Root locus of yaw degree-of-freedom (no compensator).

4.2 Dual Phase Advance Compensator

The aim of the compensator is to place all the closed-loop poles of the system

in the left half-planc. As it will be shown, the DPA will accomplish this task

satisfactorily. The gcneral transfer function of a lead compensator is:

1 +jwT

H = c_ 1 + jwaT a<l (4.7)

The above function places a zero at the point 1/T and a pole at 1/(aT). It is a

common practice to let _ _' 0.1, which puts the pole of the compensator fax

32
enough to the left to minimize its effectson the system dynamics while at the

sametime it is closeenoughto limit high frequencynoise. The only factor that

remainsto determineis the break frequency1/T. One method of selectingT, for

a type 0 system, is to place the zeroof the compensatorover the secondhighest

pole of the system [23]. This location, from the eigenvalues,is at a frequency

between 9 to 10Hz (58 to 59 fads). The bode plot of the lead compensator

describedaboveand the root locusof the system with the compensatorareshown

in figures 4.3 and 4.4,respectively.

In order to form a DPA compensatora secondlead compensatoris connected

in series to the first. The equation for the dual phaseadvancecompensatoris

basically the squareof equation 4.7. Substituting 1/a = 10, the transfer function

for the dual phase-advance is the following:

(jw + l/T) 2

HDPA = g (jw + 10/T) 2 (4.8)

The root locus of tile system with the DPA compensator is shown in figure 4.5.

Compared to the single phase advaalce, the DPA compensator may not seem

much advantageous in the present case. This can be attributed to the current

feedback in the amplifiers which increases the break frequency of the coils to

1130.9 rads/sec. If the break frequency of the coil alone was used (R/L = 26.9

rads/sec), the advantages of the DPA compensator would become more obvious.

The DPA compensator is chosen here because of its popular application in

magnetic suspension systems.

4.3 Application of The DPA to All Five Degrees-of-Freedom

The stabilizing technique given for the single degree-of-freedom system can be

applied to all five degrees-of-freedom. However, to case the process of analysis,

33
space-statemethod will be employed. The block diagram of this process is

depictedin figure 4.6.

IX]

"D

E

0

-10

-20

-,30

10 t

I I I I I I i i i I I I ! I I I I , , , i ! i i

................ i!.......... j__ii ,.....J...i...i..i.i.i!_i... .......... ................ ii.......... i..!....i...i..i..i..i..i ................. i......... i i....i....i...!...

102 10 -_ 104

Frequency (rod/sec)

1O0

0

-1oo

-200

10 _

i ! _ i _ _i . . ..........

.......................... !...... ii!iiii................. :......... _____iiT: ............... ........................ ............... _...... _--_T-i__

I I i I I I i |1 I i i I I I 1 I I 1 I 1 l I I 1 l

102 I0 '_ 10'*

Frequency (rod/sec)

Figure 4.3- Bode plot of the lead compensator.

C_n

Q

g

2000

1500

1000

500

0

-500

-1000

-1500

-2000

-2000

i I I

--1500 -1000 -500

Reol Axis

Figure 4.4- Root locus of yaw with one lead compensator.

34

0 500 1000 1500 2000
2000

1500

1000

500

o

-500

-1000

-1500

-2O0O

-2000

I

-1500

, . j " , ,

, , i_ = = =

-- 1000 --500 0 500 1000 1500 2000

Real Axis

Figure 4.5- Root locus of yaw with DPA compensator.

G"

o

v

__o

O

it

o

>-

25 ,- , • , _ "r r

2 .................... ''"_,i ..................4..................... _-i................... ii...................... i..................... _.................... -...................

1.5 ""/i- ............ _..................... ...................... ..................... "..................... i...................... _.....................

1 ................./.........i........_ ..................... _...................... _...................... i..................... _..................... ;..................... i.....................

5 ................... ;..................... i...................... i..................... "..................... "..................... i...................... !...................

0

0.5

0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4.

5ec

Figure 4.6- Step response in yaw for the selected gain

35
PLANT

DPA COMP. I_

COIL/AMP

POSITION OUTPUTS 1 -

Figure 4.7- Plant and controller block diagram.

The state-space models describing the plant and power aanplifiers and coils have

already bcen determined in previous chaptcr. The necessary step now is to

detcrmine the state-space model for five independent compensators to adequately

stabilize the overall system.

In order to select the compensator break frequencies for other dcgrees of

freedom, the modes of the system should be examined. Again referring to table

3.3, the dynamics of the pitch degree-of-freedom (open loop poles of 4-59.26

rads/s) is very similar to that of yaw. It secms reasonable to use the same

compensator valucs for pitch. From the threc remaining modcs, axial and vertical

motions are marginally stable, and the unstable polc due to the lateral motion is

very close to the imaginary axis. This allows for some flexibility in selccting the

compensator paramcters, sincc they are very close to being stable. An initial

tendency would be to use similar compensator settings for all five degrees-offreedom for simplicity, and this will be shown to be workable.

36
From the transfer function, one can construct the state-space model for a

single compensator as follows:

._C

2 1

T T 2

1 0

_C

1

0

@c= [n 2] (4.9)

Substituting the values selected for the yaw degree-of-freedom into the above

state-space equations results in the following:

.

1.5385e3 -5.9172e5

1 0

Cc = [-1.7906e5-7.4964e7] _c = [127.691

(4.10)

By arranging five of the above models in parallel, arranged in a single statespace system, the basic compensator structure is complete and can be attached to

the plant model. This can be easily accomplished by using the "APPEND"

command in MATLAB TM. The resulting compensator state-space model is as

follows:

-1.53c3-5.92e5 0

1 0

0

0 0

-1.53e3-5.92e5 0

1 0 0 0

0 -1.53e3 -5.92e5

1 0

0

0

0

0 0

0 -1.53e3 -5.92e5 0

1 0 0 0

0 -1.53e3-5.92e5

1 0

37

(4.11)
'_'_c =

1 0 0 0 0

"'" 0 "'"

0 1 0 0 0

"'" 0 ''"

0 0 1 0 0

"'" 0 "'"

0 0 0 1 0

"'" 0 "'"

0 0 0 0 1

"'" 0 "'"

(4.11)

CCc =

-1.79e5 -7.49e7

-1.79e5 -7.49e7 .-. 0 .-.

-1.79e5 -7.49e7

• .. 0 .... 1.79e5 -7.49e7

-1.79e5 -7.49e7

(4.12)

_fl)cT= [127.69 127.69 127.69 127.69 127.69] (4.13)

The compensator's state-space model is connected in the feedback path of the

closed loop system. Again, this is accomplished by using the command

"FEEDBACK" in MATLAB TM. The feedback gain is a variable which can be

selected based on the desired response. The gains on all degrees-of-freedom can be

lumped in a diagonal "gain matrix" and added to the compensator. In simulation

these gains are combined with the sensor gains. The sensor gains are determined

38
through some experimental measurements. These gains vary somewhat depending

on the optical alignments and the adjustment of the electronics. Typical

measured sensors gains in V/m are shown below:

gsensor : [5077 5495 6024 6965 6560] (4.14)

These gains are converted to gains for each degree of freedom using some

approximations. The coupled sensor signals (sensors 1 and 3 and sensors 4 and 5)

can be averaged and assumed to have the same gains. These averages can directly

be used for linear motions (vertical and side motions). In the case of pitch and

yaw, the distances between the two coupled sensors (sensors one and three for

pitch and four and five for yaw) are used to derive angular displacements. Using

simple geometry the following equation can be deduced:

angular displacement = V1 gl - V3 g3 d = ( gave --7-/ _ AV (4.15)

The value in parentheses is the angular gain for either pitch or yaw. A typical set

of decoupled sensor gains is shown below:

gol=[162.8V/rad 183.9V/tad 4882.1V/m 5269.7V/m 5137.8V/m] (4.16)

These gains in conjunction with the compensator's gains are arranged in the

diagonal of the 5 x 5 gain matrix. The gain matrix is added to the model by

simple multiplication to the output of the compensator state space equation.

The forces and torques necessary to control the core are generated by a

combination of currents in the coils. These currents are determined through a

mixing matrix which tra_lsforms the position errors to currents necessary to

39
correct them. A general mixing matrix caax be derived, based on 1 unit of field

and field gradient in the position of the core. This produces a 5 x 5 matrix shown

below:

B

I1D 1.8282e3 0 1.9652e2 0 -1.4687e2 -B, !

I2D 2.3703e3 1.6446e3 -1.5901e2 1.1553e2 -4.5418el B,, I

I3D = 2.0347e3 1.0160e3 6.0751el-1.8689e2 1.1885e2 Bxx!

I

I4D 2.0347e3 -1.0160e3 6.0751el 1.8689e2 1.1885e2 Bxy i

_I5D - 2.3703e3 -1.6446e3 -1.5901e2 -1.1553e2 -4.5418el _Bxzl,

(4.17)

This matrix is normalized column-by-column for simplicity. Tile resulting matrix

is as follows:

0.7713 0 1 0 -1

1 1 -0.809 0.618 -0.309

0.768 0.618 0.309 -1 0.809

0.768 -0.618 0.309 1 0.809

1 -1 -0.809 -0.618 -0.309

(4.18)

4.4 Closed-Loop System Dynamics

The closed-loop poles determine the stability of the system for a given set of

gains. Sincc a root locus plot of a multi-input multi-output system is not easy to

interpret, a study of gain variation of one degree-of-freedom at a time Call be

helpful. Through variation of gains for one degree-of-freedom at a time, a

reasonable set of gains for all degrees-of-freedom was determined. These gains are

shown below, and the resulting closed-loop poles are depicted in figure 4.8.

gains = [0.1 0.1 0.5 0.5 0.5] (4.19)

40
The stable regionof eachdegree-of-freedomwasdeterminedby varying the gains,

onedegree-of-freedomat a time, on either sideof the operating point gains.

Thesearelisted in the table below:

Degreeof Freedom Low Gain Limit High Gain Limit

Pitch

Yaw

Axial

Side

Vertical

0.01

0.08

0.11

0.21

0.12

.15

.2

.50

0.48

.51

Table 4.1 Stability limits of the LAMSTF usingthe DPA

looo

O

°c

(3

E

-1000

-2500

Ii. 411

dl

500 .....................................................................................................................................................................................

0 ......................... .--.-.,m- ............................................................................................................................................

-500 ......................................................................................................................................................................................

Q

olm

| 1

-2000 - 1500 - 1000 -500 0

Reol

Figure 4.8- Closed-loop poles of the plant.

The resulting step responses for every controlled degree-of-freedgm are shown

in figure 4.9. As it can be seen, thcy all have a reasonable damping and rise time.

41
o.,5 i i i i

o._5......................................... _...................... _..................... T:..................... i...................... i...................... i....................

I

o.._[................. "'/ ii_..................... i...................... i..................... "..................... !...................... i...................... f............... 1

1

°:r-...... /.......... t..................... i...................... i..................... _..................... :..................... _...................... '.................1

_°"_FI ............ i..................... i...................... i..................... _..................... _..................... i...................... i................1

0.1 ................. i...................... J...................... i..................... ._..................... _...................... i...................... ;....................

0.05_

0

0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4.

Seconds

(a) - Step response in x (axial).

° 5t ............ -/-i ....................

...................... i..................... i..................... i..................i...............i............i.........

0.:5....... iiiiiiiiiiiiiiiiiiiiii iiiiiiiiiiiiiiiiiii iiiiiiiiiiiiiiiiii iiiiiiiiiiiiiiiiiii iiiiiiiiiiiiiiiiiiiiiiiiiiiii

°:l-l.......... t..................... i...................... i..................... !..................... t..................... i.......................

'_°"_FI ............ i..................... i...................... i..................... i..................... t..................... i...................... i................

°"F/.............. i...................... i...................... i..................... i..................... i..................... i...................... i...................

0"01 _ ...................

0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4

Seconds

(b) - Step response in y (side).

Figure 4.9- Simulation step responses in all five degrees-of-freedom.

42
0.4

0.35 .............

°_r.......... i...... i....................i..................i...............i.............i...........i.........i.......I

_°=r........ /......... i............................................ i..................... i..................... t..........................i................1

_-°_r7.......... i............................................ i..................... T..................... i...................... i...................... i................._ _ o.15.................. _..................... i.............! .........4........ _..................... :...................... i.....................

o

................. ...................... ...................... ..................... -i..................i-...........................i.........

0 i i i i i i i

0 0.05 O. 1 O. l 5 0.2 0.25 0.3 0.35 0.4

Seconds

(c) - Step response in z (vertical).

v

E

180

160 .................... _..................................... ;"..................... I"..................... : .........................................

140 .................... i.................... i...................... i..................... : ..................... i...................... _...................... _.....................

120

1O0 .................. _...................... _...................... _..................... '; ..................... _...................... _...................... _.....................

6O

'¢0 ................. _...................... ; ...................... ;...................... ; ..................... _...................... i...................... i.....................

_o _ _ 0

0 0.05 O. 1 O. 15 0.2 0.25 0.3 0.35 0.4

Seconds

(d) Step response in/_y (pitch)

Figure 4.9- Continued.

43
180

160

140

120

100

8O

6O

4O

20

0

0 0.05 0.1 0.15 0.2 0.25 0.3 0.,55 0.4-

Seconds

(e) - Step response in 8z (yaw).

Figure 4.9- Continued.

44
CHAPTER5

Analog Controller

The major aim of this phase of the research has been to validate the concept

of the planar array magnetic suspension system. Provisions had to bc made to

implement the previous chapter's controller design into hardware. Evcn though a

digital controllcr would bc more appropriate for this application, due to the initial

inaccessibility to a suitable digital computer, an analog version of the controller

was constructed. Thc analog controller would be a bridge between the theory and

the digital controller. The analog controller consists of three major stages, sensor

decouplers, DPA compensators, and currcnt allocation mixer. This chapter will

describc the basic principles of the analog controller designed for this systcm.

5.1 Sensor Dccoupler

As explained previously, four out of five degrees-of-freedom detected by the

sensors are couplcd. By simple summing and differencing appropriate sensor

signals, the dccoupling can bc achicved. Differential amplifiers and summers are

the two basic analog circuits used to pcrfornl this task. The generic circuit

diagrams of these two stagcs are shown in figure 5.1.

The sensor output voltages should range from 0.5V at full beam to 5.0V at no

beam. However, these voltagcs deviate from ideal due to the lenses and sensor

frame mis-alignmcnts and circuit component tolerances. The sensor signals are

conditioned through a set of amplifiers to produce outputs ranging form -0.5V at

45
no beam to 10.5V

controller.

at full beam. These voltages are the inputs to the analog

_3

1(4)_

3(5)_

?

Pitch

(Yaw)

I(4) R_ Ra

3(5)_

Ver'tic(l[

(side)

Fig 5.1 Differential amplifier and summer.

The summing of sensors one and three would produce the vertical motion

signal, and summing sensors four and five produces the side motion signal. In

order to produce a 0V to 10V signal for every degree of fi-ecdom, a gain of 0.5 is

selected for thc summers to avcrage the summed inputs.

The differencing of the same combination of the above scnsors can give the

angular motion of the core. Differencing sensors one and three produces the pitch

signal, and differencing four and five results in the yaw signal. The gain in these

stages are kept to unity. The sensitivity of each sensor channel is determined

through some calibration procedure.

The signal from sensor two represents the axial movement, and is not coupled

with other degrees of fi'eedom. Therefore, the axial signal passes through the

decouplcr stage unaffected. Vertical and side movcmcnt signals pass through

invcrters to correct for signal invcrsion in the adders.

46
5.2 Dual Phase Advance Compensator

In direct correspondence with the simulation, the next stage would be to

compensate the decoupled signals. The schematic diagram of a typical analog

dual phase advance is illustrated in figure 5.2.

C1

R3

[ '

-V R4 _ Rs +V

R6

Pos_-I:ion

Gain C_

R9

R7

Figure 5.2- A typical analog DPA schematic diagram.

The corresponding equation of the phase advance, using resistor-capacitor network

in the first stage, is as follows:

1 + R1C i s

H = (5.1)

1 + RIC 1 n s

The value of n can be shown to be:

rt2 (5.2)

n =

The break frequencies of the compensator can be set by selecting suitable values

for R 1 and C 1. Since the two stages arc identical, the same principals applies to

components of the second stage C2, R 7, and R 8. Taking into consideration the

47
electronic aspects of the circuit, the following component values have been

selectedto place azero at about 16Hz: R1 - R7- 100kfl, R2 = R8 = 10 kfl,

and C 1 = C 2 = 0.1 _f. With these components, the value of n=0.09. In the

circuit the feedback resistor R 3 and R 9 mainly determine the circuit gain, and R 9

is made variable for this reason. In addition to the gain control, a D.C. offset to

the first op-amp act as the position command input.

5.3 Mixer Stage

The mixer stage is composed of a set of five summers, which combine the five

compensated signals to form the coil current demand signals. A simplified circuit

diagram forming the current demand signals is shown in figure 5.3.

The calculated values of the resistors are mostly nonstandard. Therefore,

variable resistors, adjusted for the desired values, were employed. Since the

inputs to this stage are a combination of positive and negative polarity of the

same signal, analog inverters were used to supply all the signals required. The

outputs of the op-amps of this stage are directly fed to the power amplifiers.

5.4 System Response

The suspension of the model was successfully achieved. Figures 5.4 and 5.5

are actual photos of the modcl during suspension. The performance of the analog

controller was quite satisfactory. Step rcsponscs of this controller were recorded.

These step responses along with thc mathematical simulation results are shown in

figures 5.6 through 5.10. For all degrees-of-freedom except pitch, the actual step

responses closely match the simulation results. The pitch signal seems to be less

daanped that the simulated result.

48
|,

A a°

|,

V_ -V

-A

-$

I

-A

-y

I -V

-A

L -S"

: Y

Coil I

Coil 2

A

Y

V

Coil3

Coil 5

Figure 5.3 Current allocation (Mixer) network schematic.

A - Axial

1' - Yaw

V - Vertic,,I

$ - Side

p - Pitch

Figure 5.4- Photo of the LAMSTF during operation.

49
Figure 5.5- Closeupphoto of the model while in suspension.

E

E

v

C

0

"B

o

rt

1"

0.3 ---------- --------- ----'---- i

0.25 ................... _z.,._ i ___ - ! .... i - i " -

: _ ..... 4...................... _.............. • :

0.2 ................ '...................... "" : ' : :

i --_, Simulation

I : : : _ ............. _..................... / /! _ i __ .............................................................. . :

......... / ....... _ ..................... _ ..................... :........ i -- -i Actual i

o_5 / i i i i i i

,f,. ........ ! i i i i..................... i..................... i....................

O."_ ...... "....................................................................................

! . ..4..................._....................................................

............... _- ..................... ! ...................... ! ............ : _ '.

0.05 l i _ i i i _ i

o

-0.05 0.25 0.3 0.4

0 0.05 O.I O.15 0.2

Seconds

(a)- Step response in x (axial).

Figure 5.6 - Analog controller step responses.

50
E

E

v

c

0

O.

o.2:_ i i

O. 2 ................ ' ...........

_i i ! i i i i

0.15

°"I'/'i ..................... i...................... !..................... !....................f.................!.............i..........1

o.o5_/ ! i...................... _..................... _..................... i i i

................. _....................._......................"_.....................-.....................-....................._......................_.....................

0 ¢ f | I i

0 0.05 O. 1 O. 15 0.2 0.25 0.3 0.35 0.4

Seconds

(b) Step response in y (side).

E

E

v

0

o

n

Seconds

(c) - Step response in z (vertical).

Figure 5.6- Continued.

51
°"81 ,--''_'-L

o._................... _.................... i..................... _.................... _..................... i...................... ,..................... _............ i i i i i i J .........

0.6 t ..................i...................... i.................... i..................... _.................... i.................... i.................... i...................

°5r ./_ ................... _o.,_.....I/. ......... i........................

i..................... .i i

0.2 _.............. :..................... :...................... :..................... :..................... :..................... =...................... :.....................

°"F/o .................. t__i....................i.................i...............i.............i..........!i........

0 0,05 0,1 0.15 0.2 0.25 . 0.3 0.35 0.4

Seconds

(d) - Step response in Oy (pitch).

0.6r r , _-

0.5 ................ __ ......i...........

o,L........... //....i ...................... !...................... i..................... i..................... i...................... i...................... i..................

.. /// ! i i _?'_.u'°"i° i

_._ ................. :...................... _..................... _..................... ÷..................... ;....................... i...................... _.....................

ii°

0 0.05 0.1 0.15 0.2 0.25 0.3 0.35

Seconds

(e)- Step response in 0z (yaw).

Figure 5.6 - Continued.

52

0.4
Figure 5.7 illustrates the step responses in one degree-of-freedom, with its

effect on all the other degrees-of-freedom. The coupling between pitch and axial

motions can clearly be seen.

It should be noted that the step size in these results are quite small. Larger

steps can introduce other sources of error. In the first place, the sensors have a

very small range of operation (+ 3mm). Since the sensor response curves show

nonlinearity at either extreme of its operating range, large steps can push the core

to these limits, causing deviation from theory. Further, most of the modeling was

based on the assumption that the model remains at zero position. Therefore, the

steps should be reasonably small to keep the core as dose to its operating point as

possible, while it is large enough to minimize noise interference.

o

E

v

_J

E

o

x10-3

6

4

2

0

-2

--4.

.................... i.................. i..................... i.......................... i----.-- x i

/'/', i i ! ..-.-. z

....1 .._ ............... .:.................... _............................................ _,,,-_..._ ......................... -;.....................

a /_I*_F,,,',_._ _ _ _ : : :

'_ .._i_

.................... ,._-........... ,4................. ,...................... ..................... :..................... ...................... .....................

_6 I I i I I _ I I

0 0.05 O. 1 0.15 0.2 0.25 O.5 0.55 0.4

Time (sec)

(a) x (axial)

Figure 5.7 - Coupling among the degrees-of-freedom.

53
Ev

E

0

_E

xlO-Z

i

• """'",.... i

:," . I

..................... [............... ;:.,_ ....................... _..................... ;...................... _................................................................

, •..o ...•....,...,. ....... ., .. • ........ ...,.,

............. ::-_........................................... _............................................ i_:_ ...... _........................................

:.... M i

_+++÷ N i

i

_. . _

, _,.,,__...,,_, : .14U_'f_Nl4:.,._...,_41r.;'_.._U,qr,_F" ._.'m.,'_I.,.v._.W.%_WN : • . _ . . • ....

• V i "_''X..

# .. _ i '_,_.•..--..'T.--,._',_.....,L_.._'--'_': " v" _'"..-.,.,..

_'_ I , I I I I | i

0 0.05 0.1 0.15 0.2 0.25 ' 0.3 0.35 0.4-

Time (see)

(b)- y (side).

t i

4 ............... "/'"i ........ "_'"_";'_ .................. _...... :;'"'::":_ "__ .................

i i i i ::---- x i i

............... i.................. _..................... _..................... i...................... !...... _........... ._..................... :L....................

! I./ i i i ! i-".'-.z i • i

"-= ! i ! _--- _ i i

2 .................. _..................... ,_-..................... i ...................... ,...................... _.................. _"..................... i.....................

i ! i i _+_+ N i !

,II _," _.. i _ _ _

I ',"_"7 i i i i i i i

-11-_ ..................

x./ i i i i i i i

0 0.05 0.1 0.15 0.2 0.25 0.3 0.,.35 0.4

Time (see)

(c)- z (vertical).

Figure 6.7 - Continued.

6_
14

12

I0

"10

8

v 8

"D

E

•_ 6

"E

E

4

0

2

0  ̧

-2

0

xlO-_

................. 7...................... :;....................................... i.......................................................................................

" ! i "

" i --x

/ i .... Y

.......... r.................................................................................................. _ .................................................................

i-.-. Z

; i .... M

....... ,............_........................................................................................._H:..+..i-..+... _.._............................................

l

1

oq, : ' ' t _

,

i I I I | I I

0,05 0.1 0.15 0.2 0.25 ' 0.3 0.35 0.4-

Time (sec)

(d)- 8y (pitch).

8

v

E

i)

E

0

"5

10

8

6

4

2

0

x10-_

.......... ,..........,.........................................................................................,_-._ ............................................

b...Y

- !-.-. z

•. _++++ N

4.

-2 , , , , , , i

0 0.05 O. 1 O. 15 0.2 0.25 0.3 0.35 0.4

Time (see)

(e)- 0z (yaw).

Figure 5.7 - Continued.

55
CHAPTER6

Digital ControUcr

The incorporation of a digital controller to the system was a necessary step in

order to study the system's full capabilities. Since the system is a multi-input

multi-output, coupled in most cases, it is not really suited for a fully analog

controller. A digital controller would offer more flexibility and accuracy [24]. In

the case of LAMSTF, one of its major design features is its 360 ° yaw rotation

capability. As stated previously, yaw rotation requires an almost continuous

change of the mixing matrix. This can easily be implemented in a control

algorithm, where-as it would require a complex circuit in the analog controller.

An Intel 386 based personal computer was available, so a fully digital

controller was implemented using this machine. C progra_nming language is used

to develop the controller softwa_'c since it is a versatile language and is commonly

used for many scientific applications. Added graphical displays and controls allow

monitoring, and change of controller variables in real time. This chapter describes

the prcscnt digital controller setup and the software algorithm.

6.1 Hardware Description

An A/D converter board, a D/A converter board, and a timer board are

installed in a Dell 386 (33 MHz) computer. The timer board is used in the

present setup as an interrupt source to the computer's processor to execute an

interrupt service routine.

56
6.1.1 Analog to Digital Conversion

The A/D board is a Keithley Metrabyte DAS-40. It has a maximum speed of

250,000 samples per second in single channel mode. It processes the five sensor

signals in single-ended multiplexed input format. It is programmed to perform

direct I/O commands rather than direct memory access (DMA). The data

processing sequence, acquiring samples from the five channels almost

instantaneously and processing them before the next batch, was easier to

implement using direct I/O technique. The board contains a pacer clock and can

generate interrupts. However, no interrupts were used from this board bccanse of

insufficient on-board timer capabilities.

The A/D board is set to input voltage in the range 0-10V. For a 12-bit data

conversion, a 10V range produces 2.44 mV/bit resolution.

6.1.2 Digital to Analog Conversion

The processed data is converted back to analog signals via a Keithley

Metrabyte DDA-06 digital to analog converter board. This board contains six

independent 12-bit D/A channels; only five of them are utilized presently. The

programming of this board is straight forward using I/O instructions. Data is

simply written to lower and higher bytes of each individual D/A, which are

located consecutively from the base address of the board.

The DDA-06 has a selectable analog output range. Since the power

amplifiers require an input range of 4-10V, the board is set to conform to this

range. The 20V output range produces a resolution of 4.88 mV/bit.

6.1.3 Timer Board

One necessary requirement of the controller is to process data at a constant

sample rate. If the program is simple and short, a crude method could be to add

57
a delay statement in the program to set the sampling rate. However, a more

effective and accuratemethod is to usean interrupt serviceroutine (ISR). In the

early version of the digital controller usedfor LAMSTF, no interrupt was used.

Successful suspensions were attempted, however implementation of an interrupt

was still necessary for better performance. After the installation of the DAS-40, a

timer board was used mainly as an interrupt generator.

The board used, a Tecmar Lab Master, is software programmable to produce

a range of timer frequencies. The signal from the timer is setup to produce an

interrupt request to the computer processor. The interrupt request table is

programmed to service the DAS-40 board. With this configuration, the Lab

Master generates interrupts at a predetermined frequency. The computer

acknowledges thc interrupt by calling the ISR, pointed by the interrupt level.

6.2 Discrete-Time Dual Phase Advance

The implementation of the DPA compensator requires conversion of the

continuous-time design to discrete-time. Equation 4.8 represents the Laplace form

of the DPA. To transform this equation to z domain, the bilinear transformation,

often referred to as the Tustin's method, is used [24][25]. This transformation is

shown in below:

s=-_z_lZ 1 (6.1)

Replacing w with s in equation 4.8, and using the above transformation results in

the following discrctc time DPA filter equation:

Yk = aUk + bUk-I + CUk-2 - dYk-1 - eYk-2 (G.2)

58
where the coefficientsareasfollows:

dt 2 + 4nT dt + 4n2T 2

a= dt 2+4Tdt+4T 2

(6.3)

b = 2 dt 2 - 8n2T 2 (6.4)

dt 2+4Tdt +4T 2

dt 2 - 4nT dt + 4n2T 2 (6.5)

c= dt 2 +4Tdt +4T 2

d = 2 dt 2 - 8T 2 (6.6)

dt 2+4Tdt +4T 2

dt 2-4Tdt +4T 2

e=dt 2+4Tdt +4T 2

(6.7)

For a given sample rate and compensator break frequency all the above

coefficients are constants.

6.3 Program Algorithm

The actual controller prograan is quite compact. However, many features

have been added to facilitate real time observation and modification. Since the

controller block is an interrupt service routine, it runs independently from the

main program. The variables used in thc ISR are declared as global in the main,

therefore both the main and ISR can access them.

59
6.3.1UserInterface

The main runs continuously in a loop and monitors keyboard inputs and

responds to the request made by the user. The ability to change parameters such

as loop gain or the core's position, while in suspension, can be of great assistance

in studying the behavior of the plant. The program allows the user to adjust the

gains while the core is in suspension, and can display step responses in any degree

of freedom. The graphical interface, in a form of a multi-channel oscilloscope, ca_l

plot all the core's movements in real time.

6.3.2 Dual Phase Advance

The discrete-time dual phase advance formula, shown in equation 6.2.2, is

directly implemented in the program. All the coefficients are functions of the

compensator's break frequency and the sample rate. The value for n has been set

10.0, as determined in the compensator's design. Based on a sample frequency of

400Hz, and the compensators break frequency of 17Hz, the DPA discrete equation

becomes as follows:

Yk = 23.56 U k - 36.02 Vk_ I + 13.77 Uk_ 2 - 0.287 Yk-I - 0.0206 Yk-2 (6.8)

Since there are five independent channels, tile above equation is executed five

times in each saanple period.

6.3.3 Interrupt Service Routine

The ISR, when initiated by the timers interrupt signal, performs five analog

to digital conversion from the five sensor signals. It then performs the decoupling

of the sensor signals by simple addition, subtraction, and scaling. The decoupled

signals are compensated through the discrete DPA equation. The five

6O
compensated signals are mixed through the current allocation matrix and output

to the D/A board. The ISR supplies the appropriate acknowledge signals to the

timer board and the computer interrupt handler.

6.4 System Response

The step responses and their corresponding

MATLAB TM readable format files. These responses

analog controller and the mathematical simulation

illustrates these responses for all five degrees of freedom.

gains are recorded in

are compared with tile

responses. Figure 6.1

The simulation and the

analog responses are superimposed on these plots for comparison. As with the

analog controller, the digital controller's response closely resembles the simulation.

Here again the pitch seems under damped compared to the simulated result.

0.3

0.25

0.2

I 0.15

g

"_ O. 1

0.05

0

-0.05

................ _,-x-b_. ................. _..................... _...................... _...................... i...................... _.....................

............. ........... .............. i .............. ...................... .................

........... i . . i ............ ;............ ; ................... ;,..................... _...................... ' ...................... i.....................

__ ......... : --.-_:. Anolog _ontroller !

,......l........... t..................... i...................... !..................... _..................... T................................................................

i A

0 0.05 O. 1 O. 5 0.2 0.25 0.3 0.,35 0.4

Time (sea)

(a) - Step responses in x (axial).

Figure 6.1- Digital controller step responses.

61
°"51 .... ,' ,' I

°'11 .......... t................i...............i.............i........... ......I

/;----.. i i i,i i i 1

................. _..................... i...................... i..................... #..................... #..................... i...................... i....................

E

E

0

Q_

0.15

0.05

0

0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4

Time (sec)

(b) - Step response in y (side).

F ,/,' ! _ _:'___ ,! ........

0.2 ................................. . ..................... i...................... i...................... r...................

Lfi ' i ' ' ' '

o._5 ............................................................................... .:- ..................... !...................... i...................... !.....................

g o.i .................................................................................-'....... =:=,.._.q.!.Q.,_...C._.Oi_.Q!.J.¢.C ........... i.....................

"_° I / i i i ' .... ' Digitol Cobtroller i o.

I/

0 .................... -..................... i...................... _..................... i..................... _..................... _...................... :.....................

-0.05

0 0.05 O. 1 O. 15 0.2 0.25

Time (see)

(c)- Step response in z (vertica,l)

Figure 6.1- Continued.

62

0.3 0.35 0.4
o9_ i.__.. .................... i---v'' .......... ":''i,_: .................. ".. ..................... .." ..................... .,...................... !...................... .'.....................

0.8/ i/>'_--"-_." -"-. ! i i i i

o.7i-................ _ ............

............ '.:..................... :...................... _..................... _..................... _..................... _...................... :.....................

°'61 /_s,'_o,o4_>_ ::

osL......... _ ..............

-_ •I-tfi ..................................................... -.-.-+..o,_<_.,.-_-_<,_,,,, ........................

o.__ ...................

....... ,,.....i ....... i...... i .... i ....... i ....... i ............... i.....................

0.2 - f]' -.........i..................... i...................... i.................._..................... _..................... i...................... i...................

; i i i i i ! i

o., _/_' " : : _ _ _ :.....................

0 / .......

0 0.05 O. 1 O. 15 0.2 0,25 0.3 0.,35

"rime (sec)

0.4-

(d) - Step response in Oy (pitch).

0.6 1 -i- 1

0.5 :" ' ' : _ _ :

' _ i

o.,_........... ./,/'-::i ...................... i...................... i..................... !..................... i...................... i...................... i....................

/ //'_s_aotioH i

0.3....... '......... i...................... !..................... -..................... "..................... !...................... {...................... i.....................

....."'"'-'L"'i /07; ii;';"..........

............ i..................... i....................i.................i...............!.............i..........i........

O

0 0.05 0.1 0.15 0.2 0.25

Time (sec)

(e) - Step response in 0z (yaw).

Figure 6.1- Continued.

63

0.3 0.35 0.¢
6.5 Large Angle Yaw Rotation

One of the major point of interest in this design has been the potential to

rotate the core over a range of 360 ° in yaw, while in suspension. This should bc

accomplished by rotating the sensor freane about the z axis.' The five

electromagnets, can then produce the fields and gradients necessary for suspension

in any orientation in the x-y plane. This requires proper distribution of currents

to the coils through the mixing matrix. Through some simple programming

modifications this feature of LAMSTF was successfully demonstrated.

6.5.1 The Current Distribution Matrix

Considering the symmetric geometry of the planar array, after 36 ° of rotation,

the negative _ axis intersects the axis of coil four. At this configuration coil four

effectively becomes a negative of coil one, coil five a negative of coil two, and so

on. Therefore the mixing matrix at 36 ° is identical to that at 0 °, with its rows

read'ranged to point to their new coil sequence. This pattern repeats every 36°; at

72° coil two becomes as coil one. Using this property, determination of the mixing

matrices can be limited to only six. An eu'ray of 5x5 mixing matrices were

calculated at 6" intervals, from 0° to 36 °. Again the finite element method

software, VF/GFUN, was used to generate the elements of these matrices, and

every column was normalizcd individually. Thc resulting six matrices were copied

and modificd to form 60 matrices in a full 360 ° rotation. The 5 x 5 x 60 matrix is

entered into the program through a data file during the initialization of the

controller program.

The basic idea is that, by interpolating between every adjacent matrix, finer

matrix transition could be achicvcd. A simple linear interpolation routine is

implemented. The interpolation equation used is as follows:

64
mij = mij[k-1]+ d(mijk - mij[k-1]) (6.9)

and

d = 9actual6o 9[k'1] (6.10)

(6.11)

The interpolated mixer elements n"i ij are sent to the ISR to replace the previous

va_lues,

Provisions were made for negative angles and angles beyond + 360 °. This

was simply a matrix index manipulation to reverse the indices for negative angles,

and to point to zero index Mter a 360 ° rotation.

6.5.2 Initial Current Setting

Besides the mixing matrix, the initial current vector has to be modified for

each new yaw position. The expectation was that the initial currents should

follow a sinusoidal trend, with every coil current shifted by 72 ° in phase (see figure

6.2). To accomplish this, the maximum amplitude was defined to be tlle current

value for coil one at zero angle yaw. All coil current values are calculated by

taking the cosine of the angle plus their phase shift. Coil one has 0* phase shift,

coil two 72" phase shift, and so on. This would produce a 0* yaw suspension

current set as follow:

I0 = [-14.5A-4.5A 11.8A ll.8A-4.5A] (6.12)

In the program it was found that using the cosine function continuously would

encounter program errors at times; perhaps due to interrupt conflicts. For this

65
reason and to improve calculation speed, cosine values for a range of values are

calculated and stored in an array. As the new position is sensed, the index to

point to the corresponding cosine array element is determined.

0.8

0.6

0.4

0.2

0

-0.2

-0.4

-0.6

-0.8

-1

0

I I I i l I I i , I

20 40 60 80 100 120 140 160 180, 20O

Figure 6.2- Current trend in the five coils for a 360 ° yaw rotation.

6.5.3 Mixcr Switching Tcdmique

Now that the provisions have been made to select a mixing matrix and an

initial current set, a yaw angle input to the program is necessary. In the initial

testing, the sensor frame was rotated and the yaw angle was manually increased

to track the core. A precise method would bc to attach an cncoder to the sensor

frame to monitor the sensor frame's position. However, since the controller is of

type zero, and there is a steady state error in all degrees of freedom, this error

may be used as a crude tracking signal. The yaw error signal is a low-amplitude

random signal superimposed o11 a D.C. value. With the core suspended, the

steady state error (the D.C. value) tends to increase or decrease as the sensor

66
frame is rotated. The coreinitially is suspendedat a known yaw angle. As the

error magnitude crossesa critical level with the rotation of the sensor frame, the

yaw angle is stepped by one unit; presently a unit is set to a half a degree. This

allows the program to keep track of the yaw angle without an actual feedback

from the hardware. In the program the error in yaw is continuously monitored,

once per loop. If the critical error level in detected a subroutine is called to

determine the new mixing matrix and zero position currents. The ISR has

immediate access to the calculated values.

One important factor ia using the above technique is the random noise

interference. Care must be taken not to allow instantaneous large magnitudes in

the noise to be a cause of yaw angle change. A simple low-pass filter is employed

to eliminate some of effects of the noise. For this purpose, a moving average filter

was used. The equation for the filter used is as follows:

Yk = 1⁄2 (Yk + Yk-1 + Yk-2) (6.13)

The performance of the above filter seemed fairly satisfactory.

A series of photos of the suspended element at 30 degrees steps in yaw angle,

from 0° to 120 °, are shown in figure 6.3.

67

120°

Figure 6.3 - Continued.

69
CHAPTER7

Discussion

The overall performance of LAMSTF proved to be quite satisfactory. Even

though its unique design had never been tested in hardware, successful operation

was achieved without major difficulties. The system proved to be fairly robust.

It would work well with mis-alignments in the sensor frame or small

displacements from its designed operating point. The system response seems to

match the simulated results very closely, except in the case of pitch which is a

little under damped. The actual cause for this discrepancy has not yet been

confirmed. However, some inaccuracies were discovered in the hardware which

may contribute to this problem. It was found that the core suspends slightly

above its designed operating point due to the position of the sensor frame. The

fields and the field gradients, used in tile simulation, have been calculated based

on the designed operating point. This may cause noticeable error in more

unstable modes such as the pitch. Another hardware inaccuracy was found in the

position of the coils ill the array. The radius of the coil array is about 1/8" larger

than the actual design. This would result in lower field intensity at the operating

point. New hardware is under construction to eliminate these errors. The eddy

currents in the base plate are another potential source of error in the results.

Some study of the effect of the eddy currents, induced in the base plate, directly

under each coil, suggested negligible effect oll the system. However, more

70
investigation should be done on the eddy currents generated by combination of

coils, and their effects on the system response.

The digital controller proved to be very useful to the project, since it

enhances the ability to make accurate measurements of the system's response, and

makes the yaw rotation possible. The use of the ISR greatly increases the

capabilities of the program. Since the main program itself does not have to run

the controller, it can perform many added features such as the graphics display

and the yaw rotation calculations, without affecting the sample rate.

The method utilized in switching between yaw angles can be refined to

produce smoother transitions, without the direct use of the error in yaw. One

proposed method is to use the current distribution in the coils as a mean of yaw

angle detection. However, more studies need to bc performed to.establish its

feasibility.

During thc operation of the LAMSTF, structural vibration has been observed

at highcr controller gains. The frame along with the sensor electronics mounted

on them are subject to the magnetic fields from the coils. The changing magnetic

fields can induce current in thc conductors. The structural vibration may be

attributed to induction of the changing magnetic fields to the sensor and LED

wiring. These unwanted signals arc carried to the controller as a false position

signal which produces correction signals from the controller. The correction

signals are fcd back to the current amplifiers, which produce more changing

magnetic fields, causing oscillations. Some steps need to be taken to shield the

cables and sensors from the magnetic ficlds, or to position the sensors further

away from the coils. The sensor framc is mounted on bakelite studs which are

directly bolted to thc iron cores in the coils. As the current changes in the coils,

the iron core, which bchavcs like a mmss and a spring fastened to the base plate,

moves and transmits vibrations to the sensor frame. These vibrations are again

71
carried to the controller as a position chaalge from the suspended element, causing

an oscillation. Again a new sensor frame mount, decoupled from the coils, is

being constructed.

72
CHAPTER8

Condusion

The principle of the planar array has been proven in practice. The existing

hardware was made operational using an analog and a digital controller. A simple

and well tested controller approach, using the dual phase advance controller, was

employed. The ability of the system to sustain suspension in a full 360 ° yaw

rotation was demonstrated.

One of the decoupled degrees-of-freedom, yaw, was analyzed using the DPA

compensator. The design was successfully implemented in all five degrees-offreedom.

An analog controller, using op-amps, was designed and built. Actual

suspension of the core was achieved without any major difficulties. Step responses

from the analog controller were recorded and compared to the simulated results.

All degrees-of-freedom were found to match closely to the simulation except the

pitch degree-of-freedom which seemed slightly under damped.

A 386 based personal computer, equipped with eal A/D, a D/A, and a timer,

was used to develop a digital controller for tile LAMSTF. Using the C

programing language, a control software was developed for the system. The

software utilizes an ISR to process the control algorithm. This increases the

capabilities of the program to perform other tasks such as useful user interfacing.

The software allows viewing and changing of the suspended element positions

73
graphically in real time. The uscr is able to changethe controller gain and view

and record step responses.

Step responses of the system, using the digital controller, were compared to

the analog and simulated results. Like the analog controller, the digital controller

showed a close match to the simulation, except in the pitch degree-of-freedom.

One of the major aims of the LAMSTF, to demonstrate the 360 ° yaw

rotation, was accomplished. A series of current distribution matrices at 6°

intervals were calculated and used in the program for the yaw rotation capability.

The program uses a linear interpolating scheme to calculate finer mixing matrix

components between the 6° calculated steps. A sinusoidal zero position suspension

current trend for the yaw rotation was proven to work in practice.

74
REFERENCES

[1] Jayawant, B. V.: "Electromagnetic Levitation and Suspension Techniques."

Edward Arnold, 1981.

[2] Holmes, F. T.: "Axial Magnetic Suspcnsions." Rcview of Scientific

Instruments, Vol. 8, Nov. 1937, pp. 444-447.

[3] Proceedings of The Third International Symposium on Magnetic Bearings,

Alexandria, Virginia, July 29-31, 1992.

[4] US Department of Transportation: "Assessment of the Potential for Magnetic

Levitation Transportation Systems in the United States." Congressional

Report, 1990.

[5] Britcher, C. P.; Parker, H. D.: "Progress Towards Extreme Attitude Testing

with Magnctic Suspension and Balancc Systems." AIAA Paper 88-2012,

1988.

[6] Intcrnational Workshol) on Vibration Isolation Technology for Microgravity

Scicnce Applications. Clcvelaad, Ohio, NASA Lewis, April 23-24, 1991.

[7] Johnson, R. G.; Pang, D.; Kirk, J. A.; and Anand, D.K.: "Physical Modeling

of High Speed Magnetic Bearing Systems." Proceedings of the Third

International Symposium on Magnetic Bearings, pp 474-482, July 29-81, 1992.

Is] Britcher, C. P.: "Large-Gap Magnetic Suspension Systems." International

Symposium on Magnetic Suspcnsion Technology, NASA CP 3152, pp 33-42,

August 19-23, 1991.

[9] Carmichael, A. T.; Hinchliffe, S.; Murgatroyd, P. N.; and Williams, I. D.:

"Magnetic Suspension Systems with Digital Controllers." Review of Scientific

Instruments, Vol. 57, No. 8, August 1986.

75
[10] Groom, N. J.; Britcher, C. P.: "A Descriptionof a Laboratory Model

Magnetic SuspensionTest Fixture with LargeAngular Capability."

Proceedingsof The First IEEE Conferenceon Control Applications, Vol 1, pp

454,1992.

[11] Groom, NelsonJ.; Schaffner,R. P.: "An LQR Controller DesignApproachfor

a Large Gap Magnetic Suspension System (LGMSS)." NASA TM- 101606,

July 1990.

[12] Britcher, C. P.; Ghofrani, M., Britton, T., Groom, N. J.: "The Large-Angle

Magnetic Suspension Test Fixture." International Symposium on Magnetic

Suspension Technology. NASA CP 3152, pp. 971-985, 1992.

[13] Boom, R. W.; Abdelsalam, M. K.; Eyssa, M. Y. ; McIntosh, G. E.:

"Repulsive Force Support System Feasibility Study." NASA CR-178400,

1987.

[14] Groom, N. J.; Britcher, C. P.: "Stability Considerations for Magnetic

Suspension Systems using Electromagnets Mounted in a Planar Array."

NASA CP-10066, Vol. 1, pp. 355-376, March 1991.

[15] Groom, N. J.: "Analytical Model of a Five Degree of Freedom Magnetic

Suspension and Positioning System." NASA TM- 100671, March 1989.

[16] Groom, N. J.: "Overview of Magnetic Suspension Research at Langley

Research Center." International Symposium on Magnetic Suspension

Technology, NASA CP-3152, Part 1, pp 3-13, 1992.

[17] The VF/GFUN Reference Manual. VF068894, Vector Fields Limited, June

20, 1988.

[18] Groom, N. J.; Britcher C. P.: "Open-Loop Characteristics of Magnetic

Suspension Systems Using Electromagnets Mounted in a Planar Array."

NASA TP-3229, November 1992.

[19] Kraus, J. D.: _Electromagnetics." McGraw-Hill Book Co. Third Edition 1984.

[20] Goodycr, M. J., "The Magnetic Suspension of Wind Tunnel Models for

Dynamics Testing." Ph.D. Thesis, April 1968, Published as N78-78589, Ch. 1-

8, and N78-78218, Ch. 9-14.

76
[21] Britcher, C. P.; Goodyer,M. J.; Eskins,J.; Parker, D.H.; and Halford, R..J.:

"Digital Control of Wind Tunnel Magnetic Suspensionand BalanceSystems."

IEEE, Inc., 1987,9,

[22] Britcher, C. P.; Kilgore, W. A.; and Haj, A.: "Comparison of Digital

Controllers Used in Magnetic Suspension Systems."

[23] D'Azzo, John J., C. H. Houpis, "Linear Control System Analysis & Design

Conventional and Modern." Third Edition McGraw-Hill Book Company, New

York, 1988.

[24] Kilgore, W. A.: "Comparison of Digital Controllers Used in Magnetic

Suspension and Balance Systems." NASA CR-182087, December 1989.

[25] Franklin, G. F.; Powell, J. D.; Workman, M. L.: "Digital Control of Dynamic

Systems." Addison-Wesley Publishing Co., Second Edition, 1990.

77
Appendix A

Circuit Diagrams

78
Sensor

Inpu±s

I(4) Ri R3

3(5)

Verticat

(side)

R 1 =R 2= 10kfl,

Summing amplifiers

R 3 = 5 kf_

_ensor

Inputs

I(4) R i

Rs

3(5)

R3

Differencing amplifiers

RI=R 2=R 3=R 4 =25kfl

79
Cl

Rl ,_ I

-V R4 x_x Rs ,V

R6

Posl±lon

C 2 Gain

R7

Dual phase advance circuits

R 1 =R 7=100kfl

R 2 = R 8 = 10 kfl

R 3 = 56 k12

R4= R5=0D

R 6 = 10 k12

C 1 = C 2 = 0.1 tlf

Op-amps LF-353

iV= +5V

8O
Illll

L)

I

II

m

<_

i'

C_

0

{J

I

I

{J

I

-1i

_P

{.J

C)

e_

Mixer circuit diagram

81
R1 = R 2 = 20 k12

Rf= 10kD

R3= 10kl2

R 4 = 10 kf2

R 5 = 12.96 k12

R 6 = 12.31 kl2

R 7 = 16.18 kD

R 8 = 10 kf_

R 9 = 32.36 k12

R10 = 10 k12

Rll = 32.36 k12

R12 = 10 kf/

R13 = 16.18 kD

R14 = 12.31 kD

R15 = 13.02 k_

R16 -- 32.36 kl2

R17 = 10 kgt

82

R18 = 16.18 kD

R19 = 12.32 kl2

R20 = 13.02 kl2

R21 = 12.31 k12

R22 = 16.18 k12

R23 = 10 k12

R24 = 32.36 k_

R25 = 10 kgt
Appendix B.

Program Listing

83
t* L.A.M.S.T.F. ,/

/* (Large Angle Magnetic Suspention Test Fixture) ,/

/* Controller program for the five degrees of freedom magnetic ,/

/* suspension system, at NASA Langley llampton, Virginia. ,/

/* Program By: Mehran Ghofrani ,/

/* Old Dominion University ,/

***********************************************************************

#include <graph.h>

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <float.h>

#include <dos.h>

#include <bios.h>

#include <signal.h>

#include <stdlib.h>

#include <malloc.h>

#define Address 512

#define ADC_2 544

#define DDAbase 816

#define UI' 72

#define DOWN 80

#define LEFT 75

#define RIGIIT 77

#define ENTER 28

#define ESC 27

#define FI 59

#define F2 60

#define F4 62

/* AID base address ,/

!* Timer board Address ,/

/* D/A base address ,/

84
#defineF563

#define F6 64

#define F9 67

#define F10 68

#define pi 3.14159

#define On 1

#define Off 0

********************************************************************

#pragma iutrinsic(outp,inp)

/* External Mode call (Function) Prototype ,/

extern mscl_das40(int,,int,,int,);

#define Inport 512

/* das-40 variables ,/

int mode, fiag,params[ 10];

/* Pointers to Allocated ram Buffs ,/

unsigned int *DMA_buf,*bufoffset;

unsigned int chan=10;

/* Channel and Gain Array to use by Mode 2 */

int chans[5]= {0,1,2,3,4 };

int gains[5]= {0,0,0,0,0};

int far *chans_ptr;

int far *gains_ptr;

unsigned int adcsr;

int dec,sampler;

int yl 1,xl,samplrate,diviser;

85
int intnum=OxOd; /* interrupt vector number ,/

int input,k j,num,plotcolor=O,datcolor= 15;

int ii,i,l,x,y,chd,olddat[500][5];

int zoom= 1,and=O;

int positionsign,gainupdown,trig;

int dec,tmp[5]= {53,101,149,197,245},kv,ix=25;

double al 1,a,b,c,d,e,f, current[5],savdat[5][500];

double v,v 1125] ,v2 [25],vsensor[5] ,initialoffset [5] = {4.86,1.631,-4.133,-4.133,1.631 };

double offset[5]= {4.86,1.631,-4.133,-4.133,1.631 };

double gain[5]= {.5,.5,.5,. 1,.08},gainstep=.O01,position[5],positionstep=.l ;

double mix[5][5]= { { 1.0,0.0,-1.0,0.625,0.0},

{-0.809,0.618,-0.309,1.0,1.0},

{ 0.309,- 1.0,0.809,0.768,0.618},

{ 0.309,1.0,0.809,0.768,-0.618},

{-0.809,-0.618,-0.309,1.0,- 1.0} };

double mixall[5][5][61],yawangle=O,yawanglestep=O.5,filt[5],autoyaw=O;

double cosdat[800];

int maxnum,yawcrrorlimit;

char ch,ch 1,ch2,plotmode,loop;

int rota=O;

long backc;

********************************************************************

void (_interrupt _far ,oldnum)(void);

void _interrupt _far datin(void);

*******************************************************************

void process_error(void);

void initialize(void);

void oscilloscope(void);

void timerset(void);

void adcinitialize(void);

void plotdat(void);

void keyboard(void);

void shutdown(void);

- 86
void outdat(void);

void gainplot(void);

void positionplot(void);

void trigplot(void);

void compensator(void);

void timersetup(void);

void acknowledge(void);

void savedat(void);

void getdat(void);

void newmixer(void);

void cosmak(void);

void beactive(void);

main()

{

********************************************************************

/, ISR vector setup ,/

********************************************************************

oldnum=_dos_getvect(intnum); /* 0x0d IRQ-5 ,/

_disable();

_dos_setvect(intnum,datin);

_enable();

outp(0x21,0x00);

outp(0x20,0x20);

_setvideomode(_VRES16COLOR); /*select video configuration ,/

************************************************************************

cosmak();

getdat();

adcinitialize(); /, Initialize the A/D converter board ,/

printf(" Enter Sample rate Please : ");

scanf('%d',&samplrate); /, Get the sampling rate */

initialize(); ** Compute The compensators parameters ,/

oscilloscope(); /, Display the Controller Screen ,/

87
timersetup();/* Set timer to interrupt at sample-rate ,/

/* Controller loop */

ch=ESC;

while(chl!=ESC)

{

_setcolor(4);

_rectangle(_G FILLINTERIOR,550,420,637,477);

_settextposition(28,71);

prin tf(" RUNNING");

_settextposition(29,71);

printf(" ESC- quit");

acknowledge();

while(ch!=ESC)

{

keyboard(); /* Check for user input ,/

filt[4]=filt[3];

filt[3]=filt[2];

filt[2]=filt[1];

filt[1]=filt[0];

filt[0]=_l[14];

autoyaw--.5,(filt[0]+filt[1]);

_set textposition(28,64);

print f( "%5.2f',autoyaw);

if(rota---- 1)

{

if(autoyaw>=2)

{

yawangle-yawangle+yawanglestel);

newmixer();

88
yawangle=yawangle+yawanglestep;

newmixerO;

}

if(autoyaw<=-2)

{

yawangle=yawangle-yawanglestep;

newmixerO;

yawangle=yawangle-yawang|estep;

newmixerO;

}

}

for(j=O_i<=4;++j)

{

v=vl[2+3*j];

if(sampler<=2)

{ _setcolor( 14);

_rectangle(_GFILLINTERlOR,600,345,620,340);

}

else

if(sampler>200)

{ _setcolor(l);

_rectangle(_G FILLINTERIOR,600,345,620,340);

}

if(ehd!=0)

{

if(!trig 1[ ix<474)

{

if(pIotmode=='a') plotdat();

if(plotmode=='s')

{

switch(ch2)

{

case 'x': if(j==O) trigpiot();

break;

case 'y': if(j==l) trigplot();

89
break;

case 'z': if(j==2) trigpiotO;

break;

case 'm': if(j==3) trigpiot();

break;

case 'n': if(j==4) trigplot();

break;

if(trig==0)

if(ix>=475) ix=25;/* reset screen position to begining when at end */

if(ix<=475) ix++;

/, screen horizental advance chk plotdat */

}

_setcolor(2);

_rectangle(_G FILLINTERIOR,550,420,637,477);

_settextposition(28,71);

_outtcxt(" R-Run');

_settextposition(29,71);

_out text (" ESC-exit" );

ch='.';

chl=getch();

}

*********************************************************************

_clearscreen(_GCLEA ILSCREEN);

_settextposition(1,1);

printf('The gains are:\n');

for(j=O;j<=4;++j)

printf('Gain[%d]=%8.5PpC,j,gain[j]);

_settext position (20,30);

********************************************************************

9O
_setvideomode(_DEFAULTMODE);

beactive0; /, keep the controller running ,/

}

/************** .... end of main ......... ********************************

**************************************************************************

/, oscilloscope: signal display screen setup */

void oscilloscope(void)

{

int II,jj,gainstart,posibar;

/* initialization of tile screen clear array ,/

for(ll-O;ll<-5;++ll)

{

for(jj=0;jj< =500;++j j)

olddat[jj][ll]=20;

)

/* display of the oscilloscopescreen */

_clearscreen(_GCLEARSCREEN);

_setcolor(13);

_rectangle(_GBORDER,0,0,639,479);

_setcolor(plotcolor);

_rectangle(_G FILLI NTERlOlt,20,5,480,290);

_settextposition(4,2);

printf('X');

_settextposition(7,2);

printf('Y');

_settextposition(10,2);

print f(" Z');

_ set textposition ( 13,2);

printf(" M');

_settextposition(16,2);

printf(" N');

_setcolor(7);

for(ll=52;ll< =244;11=i1+48)

{

_moveto(19,11);

_lineto(24,11);

91
_moveto(476,11);

_lineto(484,11);

}

********************************************************

/* Gain control knobs Display ,/

_setcolor(8);

backc=8;

_setbkcolor(backc);

_rectangle(_GFILLlNTERIOR,,2,300,480,478);

_set textposition(20,2);

_settextcolor(14);

_outtext(" Feedback gain control");

_settextposition(20,40);

_outtext(" Position Control");

_setcolor(5);

jj=0;

for(ll=21;ll<=29;ll=ll+2) /, lableing the gain knobs ,]

{

_settextposition(ll,27);

print f(" %4.3ff',gain[jj]);

jj++;

_settext position (11,4);

print f(" 0" );

}

for(ll=320;ll<=448;ll=ll+32) /* gain control bar display */

_rectangle(_G FILLINTERIOR,42,11,195,11+20);

jj=0;

for(ll=320;ll<=448;ll=li+32) /* Presetting gain display */

{ /* on the screen ,/

gainstar t=(int)(gain[jj],80)+40;

_setcolor(7);

_rectangle(_GFILLINTERIOR,40,11,gainstart+3,11+20);

++jj;

}

/, display of position control knobs ,/

92
_setcolor(4);

for(ll=320;ll<=448;ll=ll+32) /* position control bar display */

_rectangle(_GFILLINTERIOR,310,11,460,11+20);

_setcolor(10);

ij=O;

for(il=320;ll<=448;ll=ll+32)

{

posibar=385+(int) (position[j j].75);

_rectangle(_G FILLINTERIOR,posibar,ll,posibar+ 1,11+20);

++jj;

}

*****************************************

/* labling of gain knob display */

_settextposi tion(21,2);

_outtext('X'); /* x or axial */

_set textposition(23,2);

_outtext('Y"); /, y or side */

_settextposition(25,2);

_outtext('Z'); /, z or vertical */

_settextposition(27,2);

_outtext('M"); /* M - pith movement ,/

_settextposition(29,2);

_outtext('N'); /*N - yaw movement */

_set textposition(2,62);

**************************************

/* Display of options */

printf('E, enable plot");

_settextposition (3,62);

printf(" D- disable plot");

_settextposi tion (5,62);

printf(" Select Gain ");

_settextposition(6,62);

printf('X-gain of x');

_settextposition(7,62);

printf('Y- gain of y') ;

_settextposition(8,62);

93
printf('Z- gain of z") ;

_settextposition(9,62);

printf("M- gain of pitch") ;

_settextposition(10,62);

printf('N- gain of yaw") ;

_settextposition(11,62);

printf("S - single plot");

_settextposition(12,62);

printf('A - all plots");

_settextposition(13,62);

printf("T - triggered ");

_settextposition(14,62);

printf("C - continuous");

_settextposition(15,62);

printf(" F 1- unzoom plot");

_settextposition(16,62);

printf("F2- zoom plot");

_ settex tposition ( 17,62);

printf("F4- Save data");

}

/* keyboard: User interaction through keyboard */

void keyboard(void)

{

char chin;

if(kbhit0!=0 )

{

chin=getch0;

switch(elfin)

{

case 'X':case 'x': ch2='x';

_setcoior(8);

_rectangle(_GFILLINTERIOR.,35,320,39,478);

_setcolor(12);

_rectangle(_GFILLINTERIOR,35,320,39,340);

94
if(piotmode=='s')

{

_setco|or(plotcolor);

_reetangle(_GFILLINTERIOR,20,5,480,290);

)

break;

case 'Y':case 'y': ch2='y';

_setcolor(8);

_ rectangle(_G FILLINTERIOR,35,320,39,478);

_setcolor(12);

_rectangle(_GFILLINTERIOR,35,352,39,372);

if(plotmode=='s')

{

_setcolor(ploteolor);

_ rectangle(_GFILLINTERIOR,20,5,480,290);

}

break;

case 'Z':case 'z': ch2='z';

_setcolor(8);

_ rectangle(_G FI LLI NTER10 R,35,320,39,478);

_setcolor(12);

_rectangle(_G FILLINTERlOR,35,384,39,404);

if(plotalode=='s')

{

_setcolor(plotcolor);

_ rectangle(_G F1LLINTERIOR,20,5,480,290);

}

break;

case 'M':case 'm': ch2='m';

_setcolor(8);

_rectaqgle(_G FILLINTERIOR,35,320,39,478);

_seteolor(12);

_ rectangle(_G FILLINTERIOR,35,416,39,436);

if(plotmode=='s')

{

_setcolor(plotcolor);

95
_rectangle(_GFILLINTERIOR,20,5,480,290);

}

break;

case 'N':case 'n': ch2='n';

_setcolor(8);

_rectangle(_G FILLINTERIOR,35,320,39,478);

_setcolor(12);

_rectangle(_G FILLINTERIOR,35,448,39,468);

if(plotmode=='s')

{

_setcolor(plotcolor);

_rectangle(_GFILLINTERIOR,20,5,480,290);

}

break;

case 'S': case 's': plotmode='s';

_setcolor(plotcolor);

_rectangle(_G FILLINTERIOR,20,5,480,290);

break;

case 'A': case 'a': plotmode='a';

break;

case 'T': case 't': trig=l;

break;

case 'C': case 'c': trig=0;

break;

case 0:

chin=getch();

switch(chin)

{

case RIGHT: gainupdown=l;

gaiuplot();

break;

case LEFT: gainupdown=-l;

gainplot();

break;

case UP: positionsign=l;

positionplot();

96
m

break;

case DOWN: positionsign=-l;

positionplot0;

break;

case FI: if(zoom>l) zoom=zoom-l;

_settextposition(1,60);

printf('%i ",zoom);

break;

case F2: if(zoom<10) zoom=zoom+l;

_settextposition(1,60);

printf('%i ",zoom);

break;

case F4: savedat(); /, Save step responses if needed */

break;

case F5: yawangle=yawangle-yawanglestep;

newmixer();

break;

case F6: yawangle=yawangle+yawanglestep;

newmixer();

break;

case Fg: rota=0;

_settextposition(30,64);

printf('Off',zoom);

break;

case FI0: rota=l;

_settext position (30,64);

prin tf(" Oil ",zoom);

break;

}

break;

case 'E':case 'e': chd--1;

break;

case 'D':case 'd': chd=0;

break;

case ESC: ch=ESC; break;

97
}

}

chin='.';

}

****************************************************************************

/* initialize: setting the parameters of the dual phase advance compensator */

void initiMize(void)

{

double dt,T,n,Tnd;

int breakfreq;

printf('\n Enter Compensator's Break frequency (170hz): ");

scanf('%d',&breakfreq); /* Get the break frequency */

dt=l/((double) samplrate); /, period of the sampling ,/

T=l](2.0*pi*(double)(breakfreq)); /* 1/break frequency*]

printf('T= %9.6f_n',T);

n=10.0; /, ratio of lead to lag break frequency */

al 1= 1/((dt,dt)+4,T,dt+4,(T,T));

b=(dt,dt)+4,n,dt,T+4,n,n,T*T;

c=2*dt*dt-8*n*n*T*T;

d=(dt,dt)-4,n,dt,T+4,n,n,T,T;

e=2,dt,dt-8,T,T;

f=(dt,dt)-4,dt,T+4,T,T;

printf('\n')_

printf('\n');

printf('\n');

print f(_ a=%9.6_n ",al 1);

print f(" b=%9.6f_n',b);

printf('e=%9.6f_n',c);

printf('d=%9.6f_n',d);

printf('e=%9.6_n',e);

printf(" f=%9.6_n",f);

getch();

}

98
/, Plotdat: plot of signals */

void plotdat(void)

{

kv=4+(j+ 1),48-(int)(v*2*zoom);

if(kv>=290) kv=290;

_setcolor(plotcoior);

_ setpixel(ix,olddat [ix] [j+ 1]);

_setcolor(datcolor);

_setpixel(ix,kv);

olddat[ix][j+l]=kv;

}

************************************************************************

/, trigplot: plot of signals */

void trigplot(void)

{ int plotcenter= 148;

kv=plotcenter-(int)(v* lO*zoom);

if(kv>=290) kv=290;

_setcolor(plotcolor);

_set pixei(ix,olddat [ix][j + 1]);

_setcolor(datcolor);

_setpixel(ix,kv);

olddat[ix][j+l]=kv;

}

************************************************************************

/, gainplot: to display gain on each degree of freedom graphically */

void gainplot(void)

{

int gainknob,knobcolor;

switch(ch2)

{

case _X_:

if((gain[O]>=O) && (gain[O]<=2))

{

knobcoior=6+gainupdowu;

99
_setcolor(knobcolor);

gainknob=40+(int)(gain[0]*80.0);

_rectangle(_G FILLINTEKIOR,gainknob,320,gainknob+3,340);

gain[0]--gain[0]+gainupdown*gainstep;

_settextposition(21,27);

printf('%4.3f",gain[0]);

}

else

if(gain[0]<0) gain[0]=0;

if(gain[0]>2) gain[0]=2;

break;

case 'y'_:

if((gain[1]>=0) && (gain[I]<=2))

{

knobcolor= 6+gainupdown;

_setcolor(knobcolor);

gainknob=40+(int)(gain[1]*80.0);

_rectangle(_GFl LLINTERIOR,gainknob,352,gainknob+3,372);

gain[1]=gain[1]+gainupdown*gainstep;

_settextposition(23,27);

printf('%4.3f',gain[1]);

else

if(gain[1]<O) gain[1]=O;

if(gain[i]>2) gain[I]=2;

break;

case 'z'"

if((gain[2]>=0) && (gain[2]<=2))

{

knobcolor=6+gainupdown;

_setcolor (knobcolor);

gainknob=40+(int)(gain[2]*80.0);

_ rectangle(_G FILLINTERIOR,gainknob,384,gainknob+3,404);

gain[2]=gain [2]+gain updown*gainstep;

_set textposition(25,27);

100
printf("%4.3f',gain[21);

}

else

if(gain[2]<0) gain[2]=0;

if(gain[2]>2) gain[2]=2;

break;

case _rn _'-

if((gain[3]>=0) && (gain[3]<=2))

{

knobcolor=6+gainupdown;

_setcolor(knobcolor);

gainknob=40+(int)(gain[3]*80.0);

_rectangle(_G FILLINTERIOR,gainknob,416,gainknob+3,436);

gain[3]=gain[3]+gainupdown*gainstep;

_settextposition(27,27);

pri ntf(" %4.3t" ,gain [3]);

}

else

if(gain[3]<0) gain[3]=0;

if(gain[3] >2) gain[3]=2;

break;

case _11_:

if((gain[4]>=0) && (gain[4]<=2))

{

knobcolor=6+gainupdown;

_setcolor(knobcolor);

gainknob=40+(int)(gain[4]*80.0);

_ rectangle(_G FILLINTERIOR,gainknob,448,gainknob+3,468);

gain [4] =gain[4]+gainupdown*gainstep;

_settextposition(29,27);

printf('%4.3f',gain[4]);

}

else

if(gain[4]<O) gain[4]=O;

if(gain[4]>2) gain[4]=2;

break;

101
}

}

/********************************************************************/

/* positionplot: control and display of position knobs ,/

void positionplot(void)

{

int knobcoior,positionknob,bkcolor;

knobcolor= 10;

bkcolor=4;

if(trig==l)

ix=25;

sampler=0; /, counter for collecting data ill ISR */

switch(ch2)

{

Ease _X':

_ setcolor (bkcolor);

_rectangle(_G FILLINTERIOR,310,320,461,340);

_setcolor(knobcolor);

position[0]=position[0]+positionsign,positionstcp;

if(positiou[0]<-1) position[0]=-1;

if(posltion[0]> 1) position[0]= 1;

positionknob=385+(int)(position[0].75.0);

_rectangle(_G FILLI NTER10 I_,positionknob,320,positionknob+ 1,340);

break;

case 'y':

_setcolor(bkcolor);

_rectangle(_ G FI LLI NTERIOR,310,352,461,372);

_setcoior (knobcolor);

position [1] = posi tion[1] + posi tionsign, posi tionstep;

if(position[l]<- 1) position[l]=-l;

if(position[l]> 1) position[I]= 1;

positionknob=385+(int)(positiou[1].75.0);

_rectangle(_G FI LLINTERIOR, imsitionknob,352,positiouknob+ 1,372);

break;

case 'z':

_setcolor(bkcolor);

102
_rectangle(_GFILLINTERlOR,310,384,461,404);

_setcolor(knobcolor);

position[2] =position[2]+positionsign,positionstep;

if(position[2] <- 1) position [2]=-1;

if(position[2]> 1) position[2]= 1;

positionknob=385+(int)(position[2],75.0);

_ rectangle(_G FILLINTERIO R,positionknob,384,positionknob+ 1,404);

break;

c_e _m_:

_setcoior(bkcolor);

_rectangle(_G FILLINTERIOR,310,416,461,436);

_setcolor (knobcolor);

position[3]=position[3]+positionsign,positionstep;

if(position [3] <- 1) position [3] =-1;

if(position[3] > 1) position[3] = 1;

positionknob=385+(int)(position[3]*75.0);

_rectangle(_G FILLINTERIOR,positionknob,416,positionknob+ 1,436);

break;

_setcolor(bkcolor);

_rectangle(_G FILLINTEi(IO R,310,448,461,468);

_setcolor (knobcolor);

position [4] = posi tion [4]+ positio_ reign* posi tionstep;

/,_settextposition(15,62);

printf(" %if,position[4]); ,/

if(position [4] <- 1) position [4] =- 1;

if(position [4] > 1) position [4] = 1;

positionknob=385+(int)(positioa[4]*75.0);

_rectangle(_G FILLINTERIOR, positionknob,448,positionknob+ 1,468);

break;

}

}

**********************************************************************

/* shutdown: outputs zero to current drivers,/

void shutdown(void)

{

103
int dtoa;

for(dtoa--O;dtoa<-4;++dtoa)

{

outp(DDAbase+dtoa*2,0);*, 00000000 for low byte at zero**

outp(DDAbase+dtoa*2+l,8);,, 1000 for high byte at zero */

}

}

**********************************************************************

*, timersetup: sets up the sample rate clock on the second ADC for interrupt ,/

void timersetup(void)

{

int rate;

/, Timer ic AM9513 settings**

outp(ADC_2+4,196); *, set no auto increment, interrupt on adc,

external trriger ,*

outp(ADC_2+9,23);/, Data pointer to master mode reg. Control Group**

outp(ADC_2+8,0); ** Set master mode register for scalar*/

outp(ADC_2+8,144); *, BCD division, enable increment, 8 bit bus*/

** FOUT off, compar disabled ; TOD disabled,/

outp(ADC_2+9,5); ** 5 Set data pointer to counter 5 **

outp(ADC_2+8,33);/* 49 No gating, Count on rising edge,*/

outp(ADC_2+8,13); /* 13 F3 source (10000 hz),

*, disable special gating Reload from load, repeat count, Binary, ,*

** count down, active high output**

rate=(int)( 10000.0*samplrate);

outp(ADC_2+8,rate); ** Binary number for the counter to repeat**

outp(ADC_2+8,0);

outp(ADC_2+9,112);/, load and start **

}

**********************************************************************

** savedat() saves data to filc */

void savcdat(void)

{

char fname[12];

int ij;

FILE ,fp;

104
_setextposi tion(25,64);

printf('Savedata?y/n\n');

ch=getchO;

if((ch=='Y') [[ (ch=='y'))

{

_settextposition(25,64);

printf(" Enter File Name");

_settextposition(26,64);

scanf("%s",gzfilame);

if((fp= fopel_(fname," w+"))!=N U LL)

{

fprint f(fp,"stepdat= [\n");

for(i= I;i< =200;i++)

{

for(j=O;j<=4;j++)

fprintf(fp,"%le ",savdat[j][i]);

fprintf(fp,"\n");

}

fprintf(fp,"];\n');

fprintf(fp,"gains=[\n");

for(i=O;i<=4;i++)

fprintf(fp,"%le \n',gain[i]); /, Save the gaius */

fprintf(fp,'];\n");

fclose(fp);

}

else

printf("Oops file error");

}

_settextposition(25,64);

printf(" ");

_settextpositiou(26,64);

printf(" ");

}

*****************************************************************************

/* cosmak : calculates cos values for angles 0..360 */

void eosmak(void)

105
{ int i,number;

doubleradang;

maxnum=(int)(360.0]yawanglestep);

yawangle=O;

for(i=O;i<=maxnum;i++)

{

radang=(yawangle/180.O),pi;

cosdat [i]=cos(radang);

yawangle=yawangle+yawanglestep;

}

yawangle=O;

}

*****************************************************************************

/, newmixer : calculates new mixing matrix and current distribution.*/

void newmixer(void)

{ int ij,k,nextone,indexl,index2,index3,index4,index5,seventy2;

int angiudex;

double angstep-6, yawangletemp;

double mixtemp[5][5],in terpol;

angindex=(int)(yawangle/yawanglestep);/, Index of the yaw angle ,/

seventy2-(int)(72.0/yawanglestep); /* Index of 72 deg based on,/

nextone=l; /* the yaw step chosen */

if (angindex<O)

{

angindex=maxnum+angindex;

nextone=- 1;

}

indexl=angindex; /*determination of cosine matrix */

index2=abs(seventy2-angindex);

index3=abs(2,seventy2-angiudex);

index4=abs(3,seventy2-angindex);

index5=abs(4,seventy2-augindex);

/,index for calculating the zero */

/*position current. Every index,

/*is 72 degrees apart from its ,/

/,adjasent neighbor. ,/

if(indexl>maxnum) /, The five if statements rap around ,/

index 1=indexl-maxnum;

if(index2>=maxnum) /, the indceis to the begining after ,/

,/

106
index2=index2-maxnum;

if(index3>=maxnum) /* 360 degrees rotation */

index3=index3-maxn urn;

if(index4>=maxnum)

index4=index4-maxnum;

if(index5>=maxnum)

indexS=index5-maxnum;

_settextposition(lO, 10);

offset[0l=initialoffset[0],cosdat[indexl]; /, Levitation curreat calculation ,/

offset[1]=initialoffset[0]*cosdat[index2]; /, using the cosil,e array, which */

offset[2]=initialoffset[0]*eosdat[index3]; /, selected depending on the angle */

offset[3]=initialoffset[0],cosdat[index4]; /, of the model, lnitialoffset[0] ,/

offset[4]=initialoffset[0],cosdat[i,_dex5]; /, is the highest steady current. */

yawangletemp= fabs(yawangle);

if(yawangle>=360) /* Adjustment for angles>360*/

yawangletemp=yawangle-360;

ang=(int)(yawangletemp/angstep); /, Determination of number of steps */

nextone= 1;

/* Determination of the interpolating coefficent ,/

interpol=((yawat,gletemp)-(double)((a,_g)*angstep))/angstep;

if(yawangle<O)

{

nextonc=-l;

ang=60-ang;

}

/* Interpolation between the mixing matrices */

for(i=O;i<=4;i++)

{

for(j=O;j <=4;j++)

{

mix[i][j]=interpol*(mixall[i][j][ang+nextone]-mixall[i][j][ang])

+mixall[ilii][ang];

}

}

_settextposition(25,64);

prin tf(" %6.3 f" ,yawangle);

107
}

/* lntrrupt service routine */

/, datin 0 obtains data from ADC in the array */

void _interrupt _far datin(void)

{

unsigned int yll,Outport;

int k,df;

for(k=O;k<=4;k++)

{

mode = 7;

flag -- O;

params[O] = k;

params[1] = O;

mscl_das40 (&mode, params, &:flag);

if (flag != O) process_error();

y=params[O];

vsensor [k] = (float)(y/409.5);

}

_enable();

**************************************************************************

/* decoupler */

vl[2l=_ensor[ll-_;

v l[5]=((vsensor[3]+vsensor[4]- 10)*-0.5)l

vt [8]=((vsensor [0]+vsensor[2]-lO)*O.g);

vl{i i]=(vsensor[Ol-vsensor[2]);

v 1[ 14] =(vsensor [3]-vsensor[4] );

if(sampler<=200)

{

for(df=O;df<=4;df++)

savdat[dq[sampler]=v 1[2+dr,3];

sampler++;

)

/, compensator: dual phase advance using backward difference method */

/, vl[2+3,1]=vl[2+3,1]+position[l]*4; */

108
for(l--O;l<=4;l++)

{

v212+3,1]=al 1,(gain[1]*(b*(v l[2+3*l]+position[l])

+c,v i [1+3, l]+d,v 1[3,ll)-

e*v2[l+3*l]-f*v213*l]);

}

**************************************************************************

/* current formation,/

for(l=0;l<=4;l++)

{

cu rren t[l] = v2[2],mix[l][O] +v2[5],mix[1] [1]+v2[8]*mix[l][2]+

v2[l 1],mix[l][3]+v2[14],mix[l][4]+offset[I];

**************************************************************************

/, Data outputs to the five D/As ,/

if(fabs(cu rrent[I]) < 10.0)

y 1l=(unsigned int)(204.75,(current[l]+ 10.0));

Outport=DDAbase+l*2;

_disable();

_asnl

{

push ax;

push dx;

mov dx,Outport;

mov ax,yl 1;

out dx,ax;

pop dx;

pop ax;

}

_enable();

l[3,J]=vl[l+3,1];

111+3,q =_112+3,1];

v213,1]=v2[l+3*l];

v2[l+a,l]=v212+3,1];

)

_disable();

109
}

_enable();

)

/,

push ax

push dx

mov dx,ADC_2 ;Load the ADC board address

add dx,6 ;point to adc high byte register

or al,al ; clear al

in al,dx ;output command

mov dx,20h

mov al,20h

out dx,al

pop dx

pop ax

; load 8259 address

; set normal priority, EOI=I, (65h)

; output command

,/

void adcinitialize(void)

{

/* DAS-40 Initialization ,/

mode=0;

flag=0;

params[0]=0;

mscl_das40(&mode,params,&flag);

if(flag !=0) process_error();

_ clearscreen(_GCLEAILSCREEN);

}

void process_error()

{

putch(7); putch(7);

printf ('**** Error %u detected in mode %u

exit(l);

", flag & Oxff, ((flag & OxffO0) >> 8));

-- 110
}

void acknowledge(void)

{

_a.sln

{

}

}

push &x

push dx

mov dx,ADC_2 ;Load the ADC board address

add dx,6 ;point to adc high byte register

or al,al ; clear al

in al,dx ;output command

mov dx,20h

mov al,20h

out dx,al

pop dx

pop ax

; load 8259 address

; set normal priority, EOI=I, (65h)

; output command

/$$¢¢$¢_$$$$$$$$$$$$$$$$$$ $$$$ $ ,$$$$$$$$_t$$$$$$,$$$$$$$$$$$$$$$ $$$$$¢$$$$$/

void beactive(void)

{

/* stay in memory,/

printf(" Keep Controller Active? y/n\n');

ch=getchO;

if((ch=='Y') II (ch=='y'))

{

_asm

{

push ax;

push dx ;

mov ah,31h ;

mov al,O;

mov dx,5Oh;

Jut 2111;

lll
}

)

else

{

pop dx;

pop ax;

_dos_setvect(intnum,oldnum);

shutdown();

}

/, getdat() loads mixing matrix data*/

void getdat(void)

{

char fname[12];

int id,k,dim;

FILE ,fp;

printf("Enter Data File Name");

_settextposition(15,30);

scanf("%s _,&fname);

if((fp=fopen(fname, _r+ "))!=NULL)

(

printf('Please wait for data to Ioad\n");

fscanf(fp,"%d _,&dim);

printf( _ Number of matrices are: %d \n ",dim);

for(k =0;k < =dim- 1;k++)

(

for(i--0;i< =4;i++)

(

for0=0_i<=4_i++)

{

fscanf(fp,_%lf ",&mixall[i][j][k]);

}

112
printf(" Data was successfully loaded, hit Enter");

getch();

fclose(fp);

}

else

fprintf(stderr,"Oops file error");

113