tesis_gonzalez_sergio.pdf

301
NUEVAS T ´ ECNICAS EN EL ACCIONAMIENTO DE M ´ AQUINAS DE MOVIMIENTO INCREMENTAL Sergio Alejandro Gonz´alez Este Trabajo de Tesis fue presentado al Departamento de Electr´ onica de la Facultad de Ingenier´ ıa de la Universidad Nacional de Mar del Plata el 3 de Octubre de 2006, como requisito parcial para la obtenci´on del t´ ıtulo de Doctor en Ingenier´ ıa.Menci´onElectr´onica Director: Dr. Ing. Mario Benedetti Co-Director: Dr. Ing. Daniel Oscar Carrica

Upload: wilson-fernando-rodriguez

Post on 12-Aug-2015

78 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Tesis_Gonzalez_Sergio.pdf

NUEVAS TECNICAS EN EL

ACCIONAMIENTO DE MAQUINAS

DE MOVIMIENTO INCREMENTAL

Sergio Alejandro Gonzalez

Este Trabajo de Tesis fue presentado al Departamento de Electronica

de la Facultad de Ingenierıa de la Universidad Nacional de Mar del Plata

el 3 de Octubre de 2006, como requisito parcial para la obtencion del tıtulo de

Doctor en Ingenierıa. Mencion Electronica

Director: Dr. Ing. Mario Benedetti

Co-Director: Dr. Ing. Daniel Oscar Carrica

Page 2: Tesis_Gonzalez_Sergio.pdf

A todos los que me conocen...

Page 3: Tesis_Gonzalez_Sergio.pdf

Indice general

Agradecimientos XIII

Resumen XIV

Prefacio XV

Nomenclatura XVI

1. Introduccion 1

1.1. Problemas y requerimientos de los accionamientos incrementales . 3

1.1.1. Excitadores para el motor hıbrido . . . . . . . . . . . . . . 3

1.1.2. Perdida de sincronismo . . . . . . . . . . . . . . . . . . . . 3

1.1.3. Los perfiles de velocidad y el tiempo de calculo . . . . . . 5

1.1.4. Modo de funcionamiento en micropasos . . . . . . . . . . . 9

1.1.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.2. Objetivos de la tesis . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.3. Organizacion del trabajo de tesis . . . . . . . . . . . . . . . . . . 12

2. Modelado del Motor de Accionamiento Incremental 16

2.1. Modelizacion de la dinamica . . . . . . . . . . . . . . . . . . . . . 16

2.2. Maquinas de movimiento incremental . . . . . . . . . . . . . . . . 19

2.3. Modelo dinamico con corrientes impuestas . . . . . . . . . . . . . 26

iii

Page 4: Tesis_Gonzalez_Sergio.pdf

2.4. Modelo dinamico con tensiones impuestas . . . . . . . . . . . . . 32

2.5. Descripcion del modelo de corrientes impuestas mediante ecuacio-

nes de estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.6. Validacion del Modelo . . . . . . . . . . . . . . . . . . . . . . . . 36

2.7. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3. Perfiles de movimiento en accionamientos incrementales 43

3.1. Perfiles de Velocidad . . . . . . . . . . . . . . . . . . . . . . . . . 44

3.1.1. Perfil trapezoidal . . . . . . . . . . . . . . . . . . . . . . . 45

3.1.2. Perfil exponencial . . . . . . . . . . . . . . . . . . . . . . . 46

3.1.3. Perfil parabolico . . . . . . . . . . . . . . . . . . . . . . . . 47

3.1.4. Perfil sinusoidal . . . . . . . . . . . . . . . . . . . . . . . . 48

3.1.5. Perfil con curvas-S . . . . . . . . . . . . . . . . . . . . . . 49

3.2. Estudio Comparativo . . . . . . . . . . . . . . . . . . . . . . . . . 52

3.2.1. Comparacion a igual perıodo de movimiento . . . . . . . . 52

3.2.2. Comparacion a igual amax . . . . . . . . . . . . . . . . . . 56

3.2.3. Comparacion a igual Vmax . . . . . . . . . . . . . . . . . . 58

3.2.4. Resumen de las comparaciones . . . . . . . . . . . . . . . . 59

3.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4. Temporizacion de los pulsos de accionamiento 61

4.1. Sistemas de Temporizacion . . . . . . . . . . . . . . . . . . . . . . 63

4.1.1. Temporizacion . . . . . . . . . . . . . . . . . . . . . . . . . 64

4.2. Un metodo de temporizacion . . . . . . . . . . . . . . . . . . . . . 65

4.2.1. Aceleracion constante . . . . . . . . . . . . . . . . . . . . . 66

4.2.2. Desaceleracion lineal . . . . . . . . . . . . . . . . . . . . . 76

4.2.3. Aceleracion no constante . . . . . . . . . . . . . . . . . . . 79

4.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

iv

Page 5: Tesis_Gonzalez_Sergio.pdf

5. Tecnica de Temporizacion Propuesta 94

5.1. Analisis de la temporizacion con

algoritmos convencionales . . . . . . . . . . . . . . . . . . . . . . 94

5.2. Nueva tecnica de temporizacion . . . . . . . . . . . . . . . . . . . 97

5.3. Impacto de los perfiles en la Implementacion . . . . . . . . . . . . 103

5.4. Implementacion en DSP . . . . . . . . . . . . . . . . . . . . . . . 103

5.4.1. Formulacion general para los perfiles de velocidad . . . . . 104

5.4.2. Resultados comparativos . . . . . . . . . . . . . . . . . . . 105

5.4.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . 106

5.5. Implementacion en FPGA . . . . . . . . . . . . . . . . . . . . . . 107

5.5.1. Implementacion hardware del algoritmo . . . . . . . . . . . 108

5.5.2. Reduccion del area de la implementacion . . . . . . . . . . 109

5.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

6. Resultados experimentales 114

6.1. Implementacion en DSP . . . . . . . . . . . . . . . . . . . . . . . 114

6.2. Resultados experimentales de la implementacion en FPGA . . . . 123

6.2.1. Implementacion FPGA en micropasos . . . . . . . . . . . . 127

6.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

7. Sistema de Adquisicion de Movimientos 131

7.1. Adquisicion de movimientos incrementales . . . . . . . . . . . . . 132

7.2. Sistemas de adquisicion de movimiento . . . . . . . . . . . . . . . 133

7.3. Sistema propuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

7.4. Tecnica de compresion . . . . . . . . . . . . . . . . . . . . . . . . 137

7.4.1. Descompresion de los datos . . . . . . . . . . . . . . . . . 141

7.5. Resultados experimentales . . . . . . . . . . . . . . . . . . . . . . 144

7.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

v

Page 6: Tesis_Gonzalez_Sergio.pdf

8. Conclusiones y Trabajos Futuros 150

8.1. Publicaciones realizadas como parte

de esta Tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

8.2. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

A. Publicaciones 157

B. Hardware para el prototipo experimental 185

B.1. Proyecto CLIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

B.2. Desarrollo de una ESDF flexible . . . . . . . . . . . . . . . . . . . 187

B.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

C. Software para el prototipo experimental 195

C.1. Caracterısticas del DSP TMS320C31 . . . . . . . . . . . . . . . . 196

C.1.1. Instrucciones del TMS320C3X . . . . . . . . . . . . . . . . 200

C.1.2. Directivas de compilacion . . . . . . . . . . . . . . . . . . 201

C.2. El entorno de simulacion . . . . . . . . . . . . . . . . . . . . . . . 203

C.3. El codigo fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

D. Desarrollos en FPGA 254

E. Hojas de Datos 265

vi

Page 7: Tesis_Gonzalez_Sergio.pdf

Indice de tablas

2.1. Modo por pasos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.2. Simbologıa utilizada para el modelo de corrientes impuestas . . . 27

2.3. Simbologıa utilizada para el modelo de tensiones impuestas . . . . 33

3.1. Resumen de los diferentes perfiles de velocidad. . . . . . . . . . . 51

3.2. Velocidades maximas . . . . . . . . . . . . . . . . . . . . . . . . . 53

3.3. Aceleraciones maximas . . . . . . . . . . . . . . . . . . . . . . . . 55

3.4. Tiempos totales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

3.5. Velocidades maximas . . . . . . . . . . . . . . . . . . . . . . . . . 58

4.1. Rampa de velocidad, resultados para n = 24 pasos . . . . . . . . . 71

4.2. Rampa de velocidad, resultados para n = 20 pasos . . . . . . . . . 77

4.3. Rampa de velocidad, resultados para n = 21 pasos . . . . . . . . . 81

5.1. Resultados comparativos . . . . . . . . . . . . . . . . . . . . . . . 95

5.2. Performance del DSP de coma flotante TMS320C30-50 (5V) . . . 96

5.3. Resultados comparativos . . . . . . . . . . . . . . . . . . . . . . . 106

5.4. Resultados comparativos . . . . . . . . . . . . . . . . . . . . . . . 106

7.1. Diccionario de compresion. . . . . . . . . . . . . . . . . . . . . . . 140

C.1. Registros de la CPU. . . . . . . . . . . . . . . . . . . . . . . . . . 199

C.2. Instrucciones usadas por el compilador de para los C3x . . . . . . 200

vii

Page 8: Tesis_Gonzalez_Sergio.pdf

C.3. Directivas que definen secciones. . . . . . . . . . . . . . . . . . . . 201

C.4. Directivas que inicializan constantes tanto de datos como memoria. 202

viii

Page 9: Tesis_Gonzalez_Sergio.pdf

Indice de figuras

1.1. Par en funcion del numero de pasos por segundo (pps). Dos curvas

pueden apreciarse, la curva de pull-out y la de pull-in, tambien lla-

mada de arranque-parada. La zona intermedia, determinada por

estas dos curvas, es la zona de funcionamiento seguro de un deter-

minado accionamiento. . . . . . . . . . . . . . . . . . . . . . . . . 4

1.2. Sistema de accionamiento moderno para maquinas de movimiento

incremental. Un controlador de jerarquıa superior, host, es el encar-

gado de establecer los parametros para los perfiles de movimientos

que se generan en cada controlador. . . . . . . . . . . . . . . . . . 6

1.3. Varias velocidades constantes y sus distintos pulsos ındice. Donde

V1 > V2 > V3 pero el tiempo entre ellos es ∆t1 < ∆t2 < ∆t3. . . . 8

1.4. Vectores de flujo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.5. Posicion del rotor en funcion al modo de funcionamiento. Modo

micropaso de 1/32 en comparacion con el modo de paso completo. 11

2.1. Detalles constructivos del rotor. . . . . . . . . . . . . . . . . . . . 18

2.2. Secciones I y II segun lo indicado en la Fig. 2.1(a). El sımbolo à sig-

nifica corriente entrante en el bobinado, mientras que el sımbolo

# corresponde a la corriente saliente. Las interconexiones de las

bobinas pueden observarse en la Fig. 2.3. . . . . . . . . . . . . . . 20

ix

Page 10: Tesis_Gonzalez_Sergio.pdf

2.3. Detalle de los bobinado que forman la fase A. De manera similar,

puede esquematizarse lo mismo para la fase B. . . . . . . . . . . . 20

2.4. Detalle de como se obtiene un campo magnetico unipolar y como

las lıneas de flujo se cierran entre el PM del rotor y el estator. . . 23

2.5. Alineacion de las fases en funcion de la secuencia de excitacion de

la Fig. 2.6(a). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.6. Formas de onda de la excitacion. . . . . . . . . . . . . . . . . . . 25

2.7. Detalle del origen de coordenadas . . . . . . . . . . . . . . . . . . 31

2.8. Circuito equivalente por fase. . . . . . . . . . . . . . . . . . . . . 33

2.9. Perfil de posicion, donde puede apreciarse que el ringing no afecta

a la posicion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2.10. Caracterıstica del paso donde el impacto del ringing es mınimo. . 39

2.11. Perfil de posicion, donde puede apreciarse aquı como el ringing

afecta a la posicion. . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3.1. Perfil de velocidad trapezoidal. . . . . . . . . . . . . . . . . . . . . 45

3.2. Perfil de velocidad exponencial. . . . . . . . . . . . . . . . . . . . 46

3.3. Perfil parabolico. . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

3.4. Perfil sinusoidal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

3.5. Comparacion realizada en el mismo tiempo. . . . . . . . . . . . . 53

3.6. Caracterıstica de aceleracion y jerking. . . . . . . . . . . . . . . . 54

3.7. Comparacion con aceleraciones constantes . . . . . . . . . . . . . 57

4.1. Esquema de un sistema de control de movimiento para maquinas

de movimiento incremental. . . . . . . . . . . . . . . . . . . . . . 62

x

Page 11: Tesis_Gonzalez_Sergio.pdf

4.2. Velocidad, pulsos ındice y localizacion temporal del calculo pro-

piamente dicho para el δi. El calculo, Tci, siempre se retrasa una

iteracion y en este caso se lo asume constante para todo el perfil

de velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

4.3. Rampa de velocidad con aceleracion constante y los pulsos veloci-

dad asociados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

4.4. Rampa de velocidad. Notar que los instantes calculados estan mar-

cados con cruces, mientras que el trazo continuo es una interpola-

cion lineal de las mismas. . . . . . . . . . . . . . . . . . . . . . . . 70

4.5. Rampa de velocidad con aceleracion constante y los pulsos de ve-

locidad asociados. La rampa de velocidad con velocidad final cons-

tante, es parte del perfil de velocidad trapezoidal. . . . . . . . . . 73

4.6. fi y fi+1 son solo las dos frecuencias de generacion posible . . . . 74

4.7. Simulacion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

4.8. Rampa de velocidad con desaceleracion lineal. . . . . . . . . . . . 78

4.9. Simulacion de desaceleracion maxima. . . . . . . . . . . . . . . . . 80

4.10. Simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

4.11. Simulacion de un perfil con curvas-S . . . . . . . . . . . . . . . . 91

5.1. Diagrama de flujo del algoritmo. Se asume que el bloque de los

perfiles de velocidad fue ejecutado previamente. . . . . . . . . . . 100

5.2. Perfil de velocidad deseado, perfil cuantizado y pulsos ındice. . . . 102

5.3. Sistema de control basado en FPGA. . . . . . . . . . . . . . . . . 110

6.1. Perfil Trapezoidal adquirido con encoder optico de 1024 ppr. . . . 116

6.2. Perfil parabolico adquirido con encoder optico de 1024 ppr. . . . . 117

6.3. Perfil con curvas-S adquirido con encoder optico de 1024 ppr. . . . 118

6.4. Perfil Trapezoidal adquirido con encoder optico de 500 ppr. . . . . 120

xi

Page 12: Tesis_Gonzalez_Sergio.pdf

6.5. Perfil parabolico adquirido con encoder optico de 500 ppr. . . . . . 121

6.6. Perfil con curvas-S adquirido con encoder optico de 500 ppr. . . . 122

6.7. Perfil de velocidad y posicion del accionamiento controlado por un

sistema basado en FPGA. . . . . . . . . . . . . . . . . . . . . . . 124

6.8. Perfil de velocidad del accionamiento controlado por un sistema

basado en FPGA. . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

6.9. Perfil de velocidad del accionamiento utilizando el modo de micro-

pasos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

6.10. Perfiles de posicion y velocidad para un sistema de accionamiento

en modo micropaso. . . . . . . . . . . . . . . . . . . . . . . . . . . 128

7.1. Metodo del perıodo. . . . . . . . . . . . . . . . . . . . . . . . . . 133

7.2. Reduccion del numero de pulsos con el aumento de la velocidad. . 138

7.3. Diagrama en bloques del sistema. Donde k es el numero de motores.139

7.4. Diagrama de flujo del proceso de descompresion de datos. . . . . . 143

7.5. Sistema de medicion . . . . . . . . . . . . . . . . . . . . . . . . . 144

7.6. Mediciones de perıodo. . . . . . . . . . . . . . . . . . . . . . . . . 146

7.7. Error relativo de las mediciones. . . . . . . . . . . . . . . . . . . . 147

B.1. Diagrama funcional del sistema de alineacion. . . . . . . . . . . . 187

B.2. Arquitectura general de la ESDF. . . . . . . . . . . . . . . . . . . 188

B.3. Diagrama en bloques funcionales de la Interfase PC-Subsistemas. 189

B.4. PCB de la ESDF. . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

C.1. Diagrama en bloques funcionales del DSP TMS320C3x. . . . . . . 198

xii

Page 13: Tesis_Gonzalez_Sergio.pdf

Agradecimientos

A Mario,

A Daniel,

A todos en el Laboratorio de Instrumentacion y Control.

xiii

Page 14: Tesis_Gonzalez_Sergio.pdf

Resumen

El trabajo de tesis esta dirigido al modelado, accionamiento y excitacion de

maquinas de movimiento incremental en condiciones de alta velocidad y precision.

Se desarrollaron modelos matematicos que reflejan el comportamiento de estas

maquinas en estas condiciones.

En alta velocidad los controladores de estos maquinas enfrentan problemas

debido al tiempo de procesamiento requerido para calcular el tiempo entre los

pasos. Se propusieron nuevos algoritmos de alta eficiencia computacional para

controladores digitales, que al requerir menores tiempos de procesamiento, ha-

cen posible el accionamiento de estas maquinas a alta dinamica. Mediante las

tecnicas propuestas se alcanzan velocidades maximas limitadas solo por aspectos

mecanicos-constructivos de las mismas.

Se diseno un sistema especial de adquisicion de movimiento de gran utilidad

para el registro de las variables cinematicas y la verificacion de los resultados

experimentales en condiciones de alta exigencia.

Gracias a las metodologıas propuestas se alcanzaron velocidades un orden de

magnitud superiores a las logradas con los metodos de accionamientos existentes.

Se construyeron dos prototipos experimentales, uno en DSP y el otro basado

en FPGA para comparar y verificar los resultados. El motor utilizado fue un

SLO–SYN KML093F14C5, el DSP fue el TMS320C31 y el dispositivo FPGA un

XC4006-3 del fabricante Xilinx.

xiv

Page 15: Tesis_Gonzalez_Sergio.pdf

Prefacio

Esta tesis es presentada como parte de los requisitos para optar al grado

academico de Doctor en Ingenierıa Electronica, de la Universidad Nacional de

Mar del Plata y no ha sido presentada previamente para la obtencion de otro

tıtulo en esta universidad u otras. La misma contiene los resultados de la in-

vestigaciones llevadas a cabo en el Laboratorio de Instrumentacion y Control,

dependiente del Departamento de Ingenierıa Electronica, durante el periodo com-

prendido entre Marzo de 2001 y Septiembre de 2004, bajo la direccion del Dr. Ing.

Mario Bennedetti y la co-direccion del Dr. Ing. Daniel Carica, profesores titulares

del Departamento de Ingenierıa Electronica.

14 de Septiembre

xv

Page 16: Tesis_Gonzalez_Sergio.pdf

Nomenclatura

∆t(k) duracion de la k-esima iteracion.

Vr(k) velocidad de referencia.

V(k) perfil de velocidad resultante.

v(n) velocidad actual.

Tc tiempo que toma una iteracion.

Tr resolucion del timer del procesador o DSP que realiza la

temporizacion mediante calculo algebraico.

Vmax velocidad maxima del motor.

N numero total de pasos a recorrer por un perfil de movi-

miento.

n iteracion actual.

nk numero de Tc ciclos que entran dentro del k-esimo paso.

k iteracion actual.

Amax aceleracion maxima del motor.

a(n) aceleracion actual.

a(n)upacceleration actual en la pendiente positiva de la veloci-

dad.

a(n)down

acceleration actual en la pendiente negativa de la velo-

cidad.

C1, C2, C3, C4 constantes que especifican el perfil de velocidad.

xvi

Page 17: Tesis_Gonzalez_Sergio.pdf

Thold torque de retencion del motor paso a paso.

λ distancia angular entre polos del motor paso a paso.

J momento de inercia del motor paso a paso.

eA f.e.m. inducida en la fase A.

eB f.e.m. inducida en la fase B.

iA corriente en la fase A.

iB corriente en la fase B.

LA inductancia de la fase A.

LB inductancia de la fase B.

Θ posicion angular.

ω velocidad angular.

T par producido.

VA,B tension aplicada a los bobinados de la fase A y B.

lA,B inductancia de la fase A y B.

rA,B resistencia serie del bobinado A y B.

M inductancia mutua.

CC Corriente continua.

DA Convertidor Digital Analogico.

DSP Digital Signal Processor.

xvii

Page 18: Tesis_Gonzalez_Sergio.pdf

Capıtulo 1

Introduccion

En los ultimos anos se advierte la aplicacion extensiva de los accionamientos

basados en motores electricos en detrimento de otros tipos de maquinas de mo-

vimiento. En una primera etapa se advirtio esta tendencia en las instalaciones

industriales y en algunos medios de transporte como el ferrocarril. En este mo-

mento asistimos a una revolucion consistente en: a) la masiva automatizacion de

los procesos de produccion con la consecuente utilizacion de maquinas electricas

y b) el aumento de aplicacion de las maquinas electricas a los automoviles reem-

plazando a los motores a combustion c) las maquinas de control numerico (CNC)

que incluyen los robots, los centros de maquinados, los sistemas inteligentes de

fresado entre otros.

Estos procesos resultan en una incorporacion generalizada de diferentes tipos

de tecnologıas asociadas al control de movimiento y a las maquinas electricas.

Dentro de las maquinas electricas, los motores de movimiento incremental son

fundamentales cuando se requiere control de precision en aplicaciones de auto-

matizacion. El accionamiento de estos motores se realiza pulsando energıa a sus

diferentes bobinados determinandose ası un movimiento discontinuo o discreto

1

Page 19: Tesis_Gonzalez_Sergio.pdf

Capıtulo 1. Introduccion 2

proporcional al numero de impulsos por segundo entregados a las bobinas. Di-

versos motores pueden ser encuadrados dentro de la categorıa de maquinas de

movimiento incremental (Kenjo and Sugawara, 1995)(Kaynak, 1996), como por

ejemplo, los motores:

paso a paso (SM),

de reluctancia conmutada (SRM),

sincronicos de ultra-baja velocidad (ULSSM).

Todos estos motores comparten la caracterıstica del movimiento incremental,

tambien llamada por pasos. Un movimiento incremental, a diferencia de un movi-

miento continuo, es aquel en que la posicion en un instante es igual a la posicion

en el instante previo mas un incremento fijo y constante.

La distancia mecanica que puede tener este incremento puede ser cualquier

unidad de distancia angular o lineal y depende de los aspectos constructivos de

estas maquinas. La resolucion de la posicion angular en los motores incrementales

rotativos va desde los 0,01 grados hasta los 90 grados. En los motores incremen-

tales de desplazamiento lineal va desde los micrones a los centımetros.

Debido a sus caracterısticas de bajo consumo, alta confiabilidad, bajo error y

existencia de un par de mantenimiento despues de desenergizado, estos motores

se han popularizado en los equipos industriales. El bajo error de posicion permite

que estas maquinas puedan ser operadas a lazo abierto, con la reduccion de costos

asociados al sensado de posicion.

Sin embargo, diversas problematicas especificas a las maquinas de movimiento

incremental hacen que en entornos industriales, las mismas queden relegadas a

las aplicaciones de baja dinamica.

Page 20: Tesis_Gonzalez_Sergio.pdf

Capıtulo 1. Introduccion 3

1.1. Problemas y requerimientos de los acciona-

mientos incrementales

Para lograr que estas maquinas tenga una performance adecuada a alta veloci-

dad existen todavıa numerosos problemas tecnologicos a resolver. A continuacion

se analizaran las principales problematicas y el estado del arte de la mismas.

1.1.1. Excitadores para el motor hıbrido

El motor paso a paso del tipo hıbrido es el mas usado en la industria ya que

el tamano del paso1 es solo limitado por la tecnologıa de fabricacion. Este fue

originalmente disenado como motor sincronico para aplicaciones de baja veloci-

dad, utilizando la tension de lınea como alimentacion. Con el advenimiento de

tecnologıas de llaves de conmutacion de estado solido se desarrollaron excitadores

(drivers) que hicieron posible el accionamiento de estos motores aun con bajas

tensiones y frecuencias distintas de las de lınea.

1.1.2. Perdida de sincronismo

A partir de la utilizacion de estos accionamientos en distintas velocidades fue

necesario conocer los lımites de carga para cada velocidad. Este lımite es el que

provoca la perdida de sincronismo abrupta entre el rotor del motor y al campo

magnetico circulante. Por esta razon los fabricantes proveen curvas de arranque-

marcha, tambien llamadas curvas de regimen sincronico o pull-out. Las mismas

representan la maxima velocidad para un determinado accionamiento y driver,

como puede verse en la Fig. 1.1.

1Un menor tamano de los pasos es sinonimo de mejor precision.

Page 21: Tesis_Gonzalez_Sergio.pdf

Capıtulo 1. Introduccion 4

par[ ]n cm

velocidad[pps]

pull-out

máxima velocidad

velocidad sin par de carga

región de arranque-parada

región develocidadsostenida

pull-in

par de retención

mínima velocidad de arranque

Figura 1.1: Par en funcion del numero de pasos por segundo (pps). Dos cur-vas pueden apreciarse, la curva de pull-out y la de pull-in, tambien llamada dearranque-parada. La zona intermedia, determinada por estas dos curvas, es lazona de funcionamiento seguro de un determinado accionamiento.

Los primeros drivers fueron los del tipo L/R. En estos, se aplica tension

secuencialmente a cada bobinado y la corriente por los mismos es limitada por

la propia resistencia asociada al bobinado, R, y la resistencia del mismo driver,

Rf . Su principal ventaja es la simplicidad, ya que para disminuir la constante

de tiempo, τ = L/(R + Rf ), solo debe aumentarse la resistencia serie. Esto trae

aparejado la desventaja de que, para mantener el mismo nivel de corriente, la

tension aplicada debe incrementarse. De esta manera, la eficiencia del driver se

ve comprometida ya que gran parte de la potencia se disipa como calor en Rf .

Otro problema para accionar estas maquinas a alta dinamica usando este tipo

de drivers son las perdidas de conmutacion. Si bien la corriente disminuye con la

frecuencia, y por lo tanto lo hace el producto I2R, las perdidas de conmutacion

Page 22: Tesis_Gonzalez_Sergio.pdf

Capıtulo 1. Introduccion 5

en el estator y en el rotor aumentan con la frecuencia. Esto es directamente

proporcional a la potencia disipada en el motor ya que a medida que crece la

velocidad, tambien lo hace la tension inducida (fuerza contra-electromotriz). Esto

hizo que los drivers L/R tuvieran un lımite en cuanto a la velocidad alcanzada,

lımite que perdurarıa durante mucho tiempo.

Nuevos tipos de drivers fueron desarrollados en funcion de la eficiencia, el

numero de llaves, la tension y corriente disponible y el numero de devanados en-

tre otros, con el fin de superar el lımite de velocidad que presentaban los drivers

L/R. Actualmente las tres topologıas de drivers mas usadas que son: el chopper

bipolar, el bi-nivel y el driver con alimentacion de corriente. De estas topologıas

de excitacion, el chopper bipolar y el bi-nivel estan comercialmente impuestas

con muy buenos resultados en cuanto a relacion costo/perfomance y han permi-

tido que, con la correcta excitacion, las maquinas alcancen velocidades maximas

limitadas solo por aspectos mecanicos-constructivos de las mismas.

1.1.3. Los perfiles de velocidad y el tiempo de calculo

Una vez superado el lımite que imponıa la excitacion, estas maquinas pu-

dieron alcanzar velocidades que las hicieron competitivas con otras que ya se

habıan impuesto en la industria. Un punto en comun de todas las aplicaciones

industriales, como las mencionadas anteriormente, es la necesidad de pasar de

una posicion a otra en el mınimo tiempo. Teniendo en cuenta las caracterısticas

de lazo abierto de estas maquinas es necesario la utilizacion de perfiles de movi-

miento para su maximo aprovechamiento. Los perfiles de movimiento definen la

trayectoria del vector posicion, velocidad o aceleracion en funcion del tiempo. El

uso de perfiles surge de la necesidad de asegurar que las aceleraciones impues-

tas al conjunto motor-carga exijan un par de carga menor que el par electrico

Page 23: Tesis_Gonzalez_Sergio.pdf

Capıtulo 1. Introduccion 6

maximo del motor. Un sistema de accionamiento para maquinas de movimiento

incremental industriales esta formado por el controlador digital de movimientos,

el driver de potencia y el o los motores. La interconexion de estos sistemas se

ilustra en la Fig. 1.2. El controlador digital de movimiento, es el que genera los

perfiles de movimiento en funcion a parametros tales como aceleracion maxima,

carga, velocidad maxima, distancia, tiempo, entre otros.

Figura 1.2: Sistema de accionamiento moderno para maquinas de movimientoincremental. Un controlador de jerarquıa superior, host, es el encargado de es-tablecer los parametros para los perfiles de movimientos que se generan en cadacontrolador.

Una vez establecido el tipo de perfil de movimiento, el controlador de movi-

miento envıa los pulsos al driver del motor. A este tren de pulsos, que determina

Page 24: Tesis_Gonzalez_Sergio.pdf

Capıtulo 1. Introduccion 7

la velocidad instantanea, se lo conoce como pulsos de accionamiento o de veloci-

dad. El espaciamiento entre los pulsos determina la velocidad instantanea del eje,

a este espaciamiento se lo conoce como temporizacion. Con cada pulso enviado,

es generada una secuencia de accionamiento para el accionamiento de un paso.

Para una velocidad constante, por ejemplo, se obtiene un tren de pulsos cuyo

espaciamiento entre pulso y pulso es tambien constante2. A este tren de pulsos

se lo conoce como ındice y es una modulacion por posicion de pulsos (PPM).

En la Fig. 1.3 pueden verse para varias velocidades constantes, los distintos pul-

sos ındice. Dada una cierta velocidad maxima V1 cuyo lımite esta impuesto por

el tiempo mınimo requerido por el procesamiento, como puede ser el caso de la

Fig. 1.3(a), la mitad de la velocidad es el doble tiempo entre pulsos. Ası como

tambien, una velocidad, V3, tres veces menor que la maxima, es un tiempo tres

veces mayor. Con este ejemplo es claro que la generacion de velocidades multiplo

de una arbitraria velocidad, es la intercalacion de un numero entero de tiempo

fijos, ∆ti en este caso.

Esta modulacion permitio una estandarizacion de los sistemas de control de

maquinas de movimiento incremental. Aparecieron sistemas que generaban los

pulsos ındice cuando se los excitaba con una tension arbitraria, denominados

indexadores (indexers). Por medio de esta modulacion, indexadores y drivers que

podıan ser de fabricantes distintos y ser utilizados en conjunto. Esto permitio una

reduccion de los costos e hizo que estas maquinas comenzaran a utilizarse en

sistemas CNC. Los primeros indexadores utilizaban logica secuencial discreta.

Con esto se lograba que el usuario pudiera modificar la velocidad a traves de

llaves de configuracion, (Fredriksen, 1974).

2Los pulsos de accionamiento que llegan al driver no deben confundirse con los pulsos depotencia que parten del driver hacia el motor. Los primeros son de baja potencia mientras quelos segundos comandan la energıa para ejecutar la motorizacion propiamente dicha.

Page 25: Tesis_Gonzalez_Sergio.pdf

Capıtulo 1. Introduccion 8

D it =100us

t

i - 3 i - 2 i - 1 i

i(t)

i + 1 i + 2 i + 3

(a) Pulsos ındice para una velocidad V1 = 10000 pps.

i - 1 i

i(t)

i + 1

D it =200us

t

(b) Pulsos ındice para una velocidad V2 = 5000 pps.

i - 1 i

i(t)

i + 1

D it =300us

t

(c) Pulsos ındice para una velocidad V3 = 3333 pps.

Figura 1.3: Varias velocidades constantes y sus distintos pulsos ındice. DondeV1 > V2 > V3 pero el tiempo entre ellos es ∆t1 < ∆t2 < ∆t3.

Sin embargo, caracterısticas tales como la implementacion de perfiles de ve-

locidad hizo dificultoso la continuidad del desarrollo usando esta metodologıa.

Cuando los microprocesadores (µP) se masificaron debido a la tecnologıa de inte-

gracion a muy gran escala (VLSI), sistemas de control de movimiento basados en

ellos aparecieron donde prestaciones como configuracion y re-programabilidad de

los movimientos fuera requerido. El estado del arte respecto a los de sistemas de

comando de accionamientos se centra en la implementacion mediante la utiliza-

cion de arreglos logicos programables (ALPs o ASICs) y/o procesadores (Kenjo

and Sugawara, 1995) (Crook, 1984).

Actualmente los perfiles mas usados son los que poseen aceleracion no-constante

Page 26: Tesis_Gonzalez_Sergio.pdf

Capıtulo 1. Introduccion 9

(Meckl and Arestides, 1998), (Kim and Kim, 2005). Esta caracterıstica requiere

una importante potencia de calculo para generar el perfil de velocidad. Esto vuel-

ve a limitar la velocidad maxima disponible de estas maquinas debido al tiempo

de computacion (Tc) entre paso y paso con los algoritmos actuales. Es por esta

razon, que el lımite actual para el accionamiento a alta dinamica de las mismas,

se encuentre en el sistema de control encargado de calcular e indexar los pulsos

de movimiento.

Existen otros factores que han impulsado la busqueda de soluciones para ex-

tender el lımite de velocidad impuesto por el sistema de accionamiento. Uno de

ellos ha sido la utilizacion del modo de funcionamiento en micropasos.

1.1.4. Modo de funcionamiento en micropasos

Con el advenimiento de mejores tecnologıas de convertidores digitales-analogi-

cos (DACs), fue posible integrar en los controladores de motores sistemas para

el manejo de motores en modo micropaso. El modo micropaso es una forma de

mover el flujo del estator mas suavemente que en los modos de paso y medio paso.

De esta manera se logra menor vibracion y ruido audible mejorando la resolucion

de posicion en fracciones 1/n del paso original del motor. Esto se consigue modu-

lando la corriente que se inyecta, en cada paso, de forma distinta para cada fase.

En un modo de paso o medio-paso, el flujo estatorico es rotado en incrementos

de 90 y 45 respectivamente, con cada paso con que es accionada la maquina,

como puede verse en la Fig. 1.4(a). Al poder modificar la corriente efectiva que

se inyecta en cada fase por separado, se puede obtener virtualmente cualquier

posicion en todo el rango de 0 a 360. Esto se aprecia en la Fig. 1.4(b).

Existen varios accionamientos de modo micropaso disponibles de forma co-

mercial. Existen drivers que otorgan modos de micropaso de 1/8, 1/16, 1/32,

Page 27: Tesis_Gonzalez_Sergio.pdf

Capıtulo 1. Introduccion 10

135° 45°

315°270°225°

180°

90°

IA

IB

(a) Vectores de flujo correspondien-tes a la excitacion por paso y mediopaso. La longitud de cada vector esproporcional al par de retencion.

170°

90°

110°120%

100%

100%

60%

80%

100%

100%

215°300°

10°

180°

IB

IA

(b) Vectores de flujo correspondien-tes a la excitacion en modo micro-paso. La direccion y la longitud sonvariables.

Figura 1.4: Vectores de flujo.

1/64 hasta 1/128. En la Fig. 1.5 pueda apreciarse el modo micropaso de 1/32 en

comparacion con el modo de paso completo para un motor de 200 ppr (1,8). El

funcionamiento con micropasos, a pesar de mejorar sustancialmente la precision,

disminuir las vibraciones y eliminar practicamente las resonancia3, tiene la des-

ventaja de que, para desarrollar la misma velocidad de un modo sin micropasos,

el motor debe ser accionado con una velocidad n veces mayor. Esto hace que,

disminuir el Tc, sea crıtico para evitar que un movimiento puede truncarse a una

determinada velocidad. Este truncamiento se produce no porque el motor tenga

un par de carga por encima de la curva de pull-out sino que el microprocesa-

dor (µP) no puede accionar al driver con la suficiente velocidad en el tiempo

calculado.

3Incluso el modo micropasos no elimina por completo la resonancia a bajas velocidades yaque la naturaleza sub-amortiguada propia de la maquina no cambia. El trabajo de Yang andKuo (2003) propone la minimizacion de la resonancia en modo mircopaso a traves de un controlde corriente en un marco de referencia sincronico.

Page 28: Tesis_Gonzalez_Sergio.pdf

Capıtulo 1. Introduccion 11

1/ 2

2 5 ms / Div .

modo de paso

micropaso 1/ 32

-paso / Div.

Figura 1.5: Posicion del rotor en funcion al modo de funcionamiento. Modo mi-cropaso de 1/32 en comparacion con el modo de paso completo.

1.1.5. Conclusiones

Por lo mencionado anteriormente es crucial encontrar nuevas tecnicas que

permitan el desarrollo de controladores capaces de accionar estas maquinas sin

que las restricciones de velocidad sea impuestas por el sistemas de accionamiento.

1.2. Objetivos de la tesis

El objetivo principal de esta tesis es el desarrollo de nuevas tecnicas algorıtmi-

cas que requieran menor tiempo de procesamiento y permitan el desarrollo de

controladores capaces de accionar maquinas de movimiento incrementales con

perfiles de velocidad, en modo paso y micropaso.

Para lograr este objetivo, esta tesis aborda los siguientes objetivos parciales:

1. Desarrollo de nuevos modelos matematicos que reflejan el comportamiento

de las maquinas de movimiento incremental en condiciones de alta dinamica.

2. Estudio comparativo de los perfiles de velocidad que se ajusten a la dinamica

de la carga a fin de garantizar movimientos sin perdidas de pasos.

Page 29: Tesis_Gonzalez_Sergio.pdf

Capıtulo 1. Introduccion 12

3. Desarrollo de nuevas tecnicas algorıtmicas que permitan el accionamiento

de maquinas a su maxima velocidad.

4. Extension de los resultados a multiplicidad de accionamientos con un solo

sistema inteligente.

5. Desarrollo de un sistema de adquisicion y registro de las variables cinemati-

cas, de gran precision, para gran velocidad y adaptado a requerimientos

especıficos.

1.3. Organizacion del trabajo de tesis

El trabajo de tesis se divide en ocho capıtulos individualizados tematicamente.

A continuacion se presenta una descripcion de los mismos, la tematica abordada

y los aportes que ahı se incluyen.

El Capıtulo 1 sintetiza el estado del arte del control de movimientos para

maquinas de movimiento incremental. Se define la maquina de movimiento in-

cremental y se introduce una clasificacion de las mismas. Se plantean los reque-

rimientos y los problemas cuando las mismas son accionadas a alta velocidad.

Se presenta una cronologıa de las problematicas que existieron para el manejo a

alta dinamica y como las mismas fueron eventualmente resueltas. Finalmente se

establece la razon de la imposicion del lımite actual de velocidad, el cual recae

en el controlador digital. Este controlador debe ser capaz de calcular y generar

el perfil de movimiento para uno o mas ejes, incluso, en el mas exigente modo

micropaso.

Para evaluar nuevos algoritmos de accionamiento es indispensable tener una

herramienta de simulacion. En el Capıtulo 2 se encuentra el desarrollo de un nue-

vo enfoque en el modelo linealizado del motor pasos a paso hıbrido. Un modelo

Page 30: Tesis_Gonzalez_Sergio.pdf

Capıtulo 1. Introduccion 13

linealizado para el motor paso a paso hıbrido es encontrado a partir de la excita-

cion aplicado al mismo, tanto en tension como en corriente. El modelo obtenido,

en ecuaciones diferenciales, es llevado al espacio de estados de forma de obtener

un modelo de simulacion basado en Matlab. Las simulaciones obtenidas son

contrastadas con las simulaciones de referencia.

En el Capıtulo 3 se presentan los perfiles de movimiento mas utilizados en

los accionamientos incrementales. Se analizan su caracterısticas y se presenta

una notacion generalizada para los mismos. Esta generalizacion presenta ventajas

para implementar los perfiles de velocidad en los sistemas de control digitales

implementados luego. Se realiza luego un estudio comparativo de los perfiles de

movimiento propuestos encontrandose cuales son los mas indicados en funcion de

la aplicacion especıfica.

En el Capıtulo 4 se introduce la generacion de los pulsos de velocidad. Se

plantea una cronologıa de su desarrollo y estudio, ası como las desventajas de

los metodos basados en logica discreta. Luego se analiza la temporizacion de los

pulsos de accionamiento en los sistemas de generacion digitales y su impacto en

los perfiles de velocidad. Se origina una metodologıa para la temporizacion de los

pulsos de accionamiento con la que se desarrollan las ecuaciones que gobiernan

la generacion tanto de perfiles de aceleracion constante como no-contante.

En el Capıtulo 5 se analizan las tecnicas de temporizacion existentes, encua-

dradas por el marco teorico encontrado en el Capıtulo 4, desde el punto de vista

de la implementacion. Se realiza un analisis del tiempo de procesamiento necesa-

rio para el desarrollo del perfil de velocidad trapezoidal. Se arriba a la conclusion

de que los algoritmos convencionales no pueden alcanzar altas velocidades, mucho

menos en el comando de multiples motores. Una nueva tecnica de accionamiento

es presentada y analizada desde el punto de vista del tiempo de procesamiento y

Page 31: Tesis_Gonzalez_Sergio.pdf

Capıtulo 1. Introduccion 14

los recursos hardware involucrados. Un analisis de las nuevas tecnicas y la genera-

cion de los perfiles de velocidad es realizada, tanto para los perfiles de aceleracion

contante como para los de aceleracion no-constante. Luego se realiza la implemen-

tacion de la tecnica propuesta. El desarrollo de la implementacion se divide en

dos partes. La primera aborda una implementacion basada en DSP y la segunda

parte plantea una implementacion basada en arreglos logicos programables.

En el Capıtulo 6 se realizan pruebas y mediciones de las implementaciones

propuestas en el Capıtulo 5. Se obtienen conclusiones de la implementacion de

los diferentes perfiles en DSP y de la flexibilidad del sistema en cuanto a la repro-

gramabilidad de los mismos y la capacidad del algoritmo frente a requerimiento

de velocidad y comando de multiples ejes. Se realizan dos implementaciones pa-

ra FPGA, con distintos tipos de multiplicadores, arribandose a conclusiones en

cuanto a los recursos logicos empleados. A modo de evaluar la performance de la

implementacion en FPGA se midieron los tiempos de procesamiento equivalentes

a la implementacion con DSP. De las mediciones realizadas con la implementa-

cion en FPGA se obtienen conclusiones en cuanto a la performance del sistema

para muy alta velocidad, incluso, en modo de accionamiento micropaso.

Como resultado adicional de este trabajo se desarrollaron tecnicas de medicion

especialmente adaptadas a este tipo de maquinas y a las prestaciones alcanza-

das. En el Capıtulo 7 se analiza y lleva a cabo un nuevo sistema de adquisicion

de variables cinematicas para altas velocidades. Se realizo un nueva tecnica de

compresion lossless para datos provenientes de encoders de precision cuando los

mismos son operados a muy alta velocidad. Para verificar la exactitud del sistema

desarrollado, se desarrollaron pruebas y se contrastan las mismas con medidores

de referencia.

En el Capıtulo 8 se plantean las conclusiones generales de la tesis y los trabajos

futuros.

Page 32: Tesis_Gonzalez_Sergio.pdf

Capıtulo 1. Introduccion 15

Referencias

Crook, J. (1984). Low cost microprocessor based speed control. In Kuo, B. C.,editor, Proceedings of the Thirteeth Annual Symposium, Incremental MotionControl System and Devices, pages 25–30, Champaign, Illinois. IncrementalMotion Control System Society, Board of Trustees of the University of Illinois.

Fredriksen, T. (1974). Design of digital control systems with step motors. InKuo, B. C., editor, Theory and Applications of Step Motors - Symposium onIncremental Motion Control Systems and Devices, 1972-1973, volume 8, pages290–315, St. Paul, Illinois. West Publishing Co.

Kaynak, M. (1996). The age of mechatronics. IEEE Trans. Ind. Electron., 43:2–3.

Kenjo, T. and Sugawara, A. (1995). Stepping Motors and their MicroprocessorControls. Monographs in Electrical and Electronic Engineering. Oxford Uni-versity Press, Oxford, U.K., 2nd reprint edition.

Kim, C. H. and Kim, K. (2005). Energy-saving 3-step velocity control algo-rithm for battery-powered wheeled mobile robots. In Proceedings of the 2005IEEE International Conference on Robotics and Automation, ICRA’2005, pa-ges 2375–2380, Barcelona, Espana.

Meckl, P. and Arestides, P. (1998). Optimized s-curve motion profiles for mini-mum residual vibration. In Proceedings of the American Control Conference,volume 5, pages 2627–2631, Philadelphia, Pennsylvania.

Yang, S. and Kuo, E. (2003). Damping a hybrid stepping motor with estimatedposition and velocity. IEEE Trans. Power Electron., 18(3):880–887.

Page 33: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2

Modelado del Motor de

Accionamiento Incremental

2.1. Modelizacion de la dinamica

A los efectos de poder simular los sistemas basados en maquinas incrementales,

es necesario disponer de un modelo matematico de los mismos. Entre los meto-

dos de modelado utilizados actualmente se encuentra el modelado por elementos

finitos (MEF). El metodo MEF se obtiene a partir de la distribucion geometrica

o estructural de las partes de la maquina y de la interrelacion de sus elementos

con el campo electro-magnetico. El metodo MEF es usado por el fabricante para

el desarrollo de simulaciones de rendimiento, rango de operacion y desgaste. A

pesar de su gran difusion actual el modelado MEF esta concebido para el diseno

especıfico de cada maquina y carece de generalidad. Ademas requiere de software

especifico el cual es necesario tanto para obtener el modelo como para interpretar

los datos obtenidos.

16

Page 34: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 17

Otro de los metodos es la modelizacion a partir de la linealizacion de la dinami-

ca (LD) del motor. El modelo LD tiene la ventaja de ser mas general y esta descri-

to ıntegramente por ecuaciones diferenciales ordinarias (ODE) las cuales pueden

ser resueltas mediante simulaciones con software de programacion general. Desde

la optica del control de estas maquinas, tener un modelo linealizado es util debido

a su inherente facilidad para el calculo tanto de la estabilidad del sistema como

de otros factores como torque instantaneo, velocidad y posicion. Es por estos mo-

tivos que un modelo linealizado del motor de iman permanente (PM) es preferido

cuando se busca estudiar el control de la dinamica de estas maquinas.

Los trabajos pioneros en la modelizacion del motor de PM son Singh (1974)

y Pickup and Russell (1980). En estos trabajos se realiza una linealizacion de las

ecuaciones diferenciales no-lineales a fin de obtener una transferencia a la cual se

arriba a partir de simplificaciones. Con el fin de lograr una mayor similitud con la

maquina real y debido a la actual capacidad de computo es posible obtener simu-

laciones directamente iterando numericamente el sistema de ODEs no-lineales.

De esta forma se evitan realizar simplificaciones con lo que se logra una mayor

similitud con la maquina real.

En la bibliografıa existen programas que muestran al usuario una modelizacion

de la maquina de PM (Kikuchi et al., 2002) (Keyhani and Proca, 1999), sin

embargo, ninguno es apto para ser utilizado en programas de simulacion generales,

como el Simulink. En esta tesis se ha realizado un esfuerzo para transformar el

modelo LD en una toolbox para Matlab\Simulink que permite la resolucion

automatizada del sistema de ecuaciones completo y de forma directa a traves de

un iteracion numerica. La misma parte de los parametros de la maquina y del

modo de excitacion impuesto, ya sea por tension o por corriente.

Page 35: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 18

II

I

imán permanente

tazas

(a) El rotor esta formado por dos tazas que forman unaunidad, denominada stack. Una tecnica utilizada por losfabricantes para incrementar el par efectivo, es apilarvarios stacks.

SN

imán permanente

l

(b) Detalle del rotor donde se aprecia eldesfasaje de un diente entre la prime-ra seccion (en blanco) y segunda seccion(en gris) del stack.

Figura 2.1: Detalles constructivos del rotor.

Page 36: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 19

2.2. Maquinas de movimiento incremental

En los motores paso a paso de los tipos hıbrido y de iman permanente (PM)

el rotor consiste en un nucleo de iman permanente al que se le apilan chapas

de material ferromagnetico. El apilamiento de las mismas se realiza de manera

de cubrir el iman en su totalidad, por lo que la estructura queda axialmente

magnetizada, formando un polo N en un extremo del eje y un S en el otro extremo.

En los bordes de esta estructura se practica la denticion, como se observa en la

Fig. 2.1. A estos apilamientos en forma de taza alrededor del PM se los denomina

stacks en la bibliografıa anglosajona. El fabricante “apila” mas stacks a medida

que crece el requerimiento de potencia. En la Fig. 2.1(a) se muestra un rotor de

doble stack, cantidad mınima para un motor con rotor de PM1. Puede apreciarse

un desfasaje de un diente entre la primera y segunda seccion del stack, en detalle

en la Fig. 2.1(b). A esta desalineacion se la llama pitch o λ y tiene un longitud

de medio paso.

El rotor se presenta en la Fig. 2.2 en donde se muestran dos vistas de corte

en las posiciones I y II de la Fig. 2.2. Se pueden observar nuevamente el desfasaje

de un diente entre el primer stack y el segundo.

1Este tipo de motor hıbrido fue concebido por K.M.Feiertag and J.T.Donahoo (1952) deGeneral Electric quienes lo disenaron como motor sincronico para aplicaciones de baja velocidad.De ahı que se lo conozca con el nombre de motor de induccion sincronica y General Electric(hoy Superior Electric) lo comercializa como Slo-Syn. Es interesante acotar ademas, que estemotor puede ser energizado con dos-fases de CA de 50Hz, obteniendose con un motor de 1,8,60 rpm.

Page 37: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 20

1 1

2 2

3 3

4 4

5 5

6 6

7 7

8 8

I II

Figura 2.2: Secciones I y II segun lo indicado en la Fig. 2.1(a). El sımbolo à sig-nifica corriente entrante en el bobinado, mientras que el sımbolo # correspondea la corriente saliente. Las interconexiones de las bobinas pueden observarse enla Fig. 2.3.

+

VA

1

3

5

7

Figura 2.3: Detalle de los bobinado que forman la fase A. De manera similar,puede esquematizarse lo mismo para la fase B.

Los devanados del estator estan interconectados para formar un arreglo bipolar

de dos fases: los bobinados de los polos 1, 3, 5 y 7 estan conectados en serie para

formar la fase A, mientras que los bobinados de los polos 2, 4, 6, y 8 forman la

fase B. Notese lo mencionado en la Fig. 2.3 donde, ademas, se detallan los bornes

homologos.

Los polos del estator rodean al rotor a lo largo de toda la longitud del mismo.

Excitando los devanados arrollados longitudinalmente sobre cada polo, se logra

un campo unipolar como el mostrado en la Fig. 2.4(a). Un campo unipolar es el

que se forma en el plano del bobinado, como se muestra en la Fig. 2.4(b). De esta

Page 38: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 21

forma se logra formar un campo de manera perpendicular al eje.

La rotacion constante se logra mediante una excitacion secuencial de las dos

fases. A diferencia de los motores de reluctancia variable, los motores con iman

permanente requieren una alternancia del campo magnetico. En funcion a esto,

varios modos de excitacion son posibles para el motor de dos fases con devanado

monofilar, presentado en la Fig. 2.1(a). En el caso de usar un driver tipo puente H

para cada fase (el driver mas comun) las formas de excitacion son las mostradas

en la Fig. 2.6.

Al aplicar una corriente entrante por las fases A y B y suponiendo la mag-

netizacion del rotor propuesta en la Fig. 2.2, el flujo magnetico resultante en los

bobinados 1 y 5 es radialmente entrante, S, como lo muestra la Fig. 2.2. Se aprecia

en la misma figura como el flujo producido en los devanados 3 y 7 es radialmente

saliente, N. Esta situacion hace que se alineen los dientes del rotor debajo de los

polos 1 y 5 de la seccion I (Fig. 2.5(a)) y 3 y 7 de la seccion II (Fig. 2.5(a)) ya que

el rotor tiende a minimizar la reluctancia que le ofrece al flujo el espacio entre el

y el estator.

La Fig. 2.6(a) muestra la forma de onda bipolar necesaria para un movimiento

como el que se expreso anteriormente. Si solo se quita la excitacion en la fase A,

luego la alineacion debe producirse entre los polos 2, 6 de la seccion I, Fig. 2.5(c)

y los polos 4 y 8 de la seccion II, como se ve en la Fig. 2.5(d). La rotacion que se

obtiene es en sentido positivo y es de tan solo un paso debido a la desalineacion

entre rotor y estator2. La secuencia para una rotacion constante en sentido horario

junto con el sentido del flujo para cada bobina se muestran en la Tabla 2.1.

2Todas las figuras presentadas aquı son esquematicas, tan solo se tiene un estator con 16dientes y un rotor con 18 dientes. Las maquinas industriales maximizan la cantidad de dientespor area donde es comun tener una denticion de hasta 80 dientes

Page 39: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 22

Tabla 2.1: Modo por pasos.

φ1 φ2 φ3 φ4 φ5 φ6 φ7 φ8 VB VA

+ + + + + + + + +V +V

+ - + - + - + - -V +V

- - - - - - - - -V -V

- + - + - + - + +V -V

Donde la convencion sobre el sentido del flujo

en cada bobina, φi, es positivo si es entrante o

negativo si es saliente y la excitacion aplicada

es unipolar. En la Fig. 2.6 se aprecia las for-

mas de onda de la excitacion, para este modo

de trabajo.

Cabe notar que el modo de excitacion de 2 fases encendidas es el modo mas

usado cuando se requiere maximizar el par, mientras que el modo de medio paso

tiene la particularidad de incrementar la posicion cada medio paso angular, por

lo que duplica la precision del accionamiento. Claro esta que en este modo de

energizar los devanados la precision del desplazamiento angular es menor que en

el modo de 1 o 2 fases encendidas y el par logrado es la mitad. A partir de aquı se

derivaran los modelos en 2 situaciones diferentes, con corrientes impuestas y con

tensiones impuestas.

Page 40: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 23

SN

N S

(a) Vista de corte del eje, rotor y estator delmotor.

(b) Campo magnetico unipolar alrededor de un de-vanado.

Figura 2.4: Detalle de como se obtiene un campo magnetico unipolar y como laslıneas de flujo se cierran entre el PM del rotor y el estator.

Page 41: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 24

S

N

S

N

N

N

NN

1

2

3

4

5

6

7

8

(a) Fases 1 y 5 excitadas, seccion I.

S

N

S

N

S

S

SS

1

2

3

4

5

6

7

8

(b) Fases 3 y 7 excitadas, seccion II.

N N

NN

N

S

S

N

1

2

3

4

5

6

7

8

(c) Fases 1 y 3 excitadas, seccion I.

S S

SS

N

S

S

N

1

2

3

4

5

6

7

8

(d) Fases 4 y 8 excitadas, seccion II.

Figura 2.5: Alineacion de las fases en funcion de la secuencia de excitacion de laFig. 2.6(a).

Page 42: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 25

vA 1 2 3 4 5 6 7 1 1

vB

t

t

(a) Una fase encendida.

1 2 3 4 5 6 7 1 1vA

vB

t

t

(b) Dos fases encendidas.

1 2 3 4 5 6 7 1 1vA

vB

t

t

(c) Medio-paso.

Figura 2.6: Formas de onda de la excitacion.

Page 43: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 26

2.3. Modelo dinamico con corrientes impuestas

Uno de los modos de excitacion consiste en inyectar una corriente controlada

a los bornes del motor. Esto significa que la misma permanece constante para

cualquier velocidad o cualquier dinamica de carga que se le imponga al motor.

A continuacion se plantearan las ecuaciones que gobiernan la obtencion del par

dinamico resultante al utilizar este modo de excitacion a las maquinas de mo-

vimiento incremental. Se desprecian los efectos producidos por las corrientes de

Foucault, el torque de detencion, la inductancia mutua y el efecto de la histeresis

en la misma. Estos efectos no son tenidos en cuenta pues solo agregan grados de

dificultad a la resolucion, los cuales escapan a la comprension basica del modelo.

La ley fundamental de la conservacion de la energıa establece que:

Potencia de la fuente = Potencia Mecanica + Crecimiento de la Energıa Magnetica

Segun la disposicion de los devanados en la Fig. 2.3 y con la convencion

de signos de la Fig. 2.1(a), y de acuerdo a la ley fundamental que planteamos,

tenemos:

− (eA · iA + eB · iB) = T · dθ

dt+

d (1/2 · i2A · LA + 1/2 · i2B · LB)

dt(2.1)

Page 44: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 27

Tabla 2.2: Simbologıa utilizada pa-

ra el modelo de corrientes impues-

tas

eA f.e.m. inducida en la fase A

eB f.e.m. inducida en la fase B

iA corriente en la fase A

iB corriente en la fase B

LA inductancia de la fase A

LB inductancia de la fase B

Θ posicion angular

ω velocidad angular

T par producido

Donde las variables en minuscu-

las son funciones del tiempo.

Es decir, la potencia instantanea es la suma del torque por velocidad angular

instantanea, mas la derivada de la energıa magnetica almacenada en las fases,

donde las simbologıa utilizada se resume en la Tabla 2.2.

Se asume que el flujo magnetico inducido por las corrientes del estator es

independiente del iman permanente. Esto es equivalente a interpretar como or-

togonales a los circuitos magneticos, ya que el flujo ahora, es solo proporcional a

la corriente aplicada. El par puede entonces, ser separado en dos partes, debido

a las dos fases:

Page 45: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 28

T = TA + TB (2.2)

por ello se puede considerar,

− eA · iA = TA · dθ

dt+

1

2· d (i2A · LA)

dt(2.3)

de igual forma para la fase B,

− eB · iB = TB · dθ

dt+

1

2· d (i2B · LB)

dt(2.4)

La tension en los terminales de cada fase es fundamentalmente la suma de

dos terminos: la f.e.m. generada por la variacion de flujo magnetico que enlazan

las faces y la tension producida por la corriente al atravesar la inductancia del

bobinado.

Por lo tanto, para la fase A, se puede reescribir la (2.3) de la siguiente forma:

− (egA + eLA) · iA = TA · dθ

dt+

d (1/2 · i2A · LA)

dt(2.5)

donde eLA es la caıda de tension en la inductancia del bobinado de la fase A y

egA es la f.e.m. generada por la variacion del flujo magnetico.

La tension inducida por la corriente en la fase A, eLA, vale:

eLA = −d (iALA)

dt(2.6)

Por lo que 2.5 queda:

−(

egA + −d (iA · LA)

dt

)

· iA = TA · dθ

dt+

d (1/2 · i2A · LA)

dt(2.7)

Desarrollando las derivadas temporales, se obtiene:

Page 46: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 29

− iAegA + iAd (iA · LA)

dt= TA · dθ

dt+

1

2

[

LA

d (i2A)

dt+ i2A · d (LA)

dt

]

(2.8)

Sin embargo, como las corrientes son constantes en el tiempo, la (2.8) puede

ser reescrita de la siguiente forma:

− iAegA + iAd (iA)

dt+ i2A

d (LA)

dt= TA · dθ

dt+ iA

d (iA)

dt+

i2A2

d (LA)

dt(2.9)

Donde el segundo termino del primer miembro, se cancela con el segundo

termino del segundo miembro. De esta forma se llega a:

dtTA = −iAegA +

i2A2

d (LA)

dt(2.10)

Dado que, dθdt

= θ = ω, la ecuacion (2.10) puede reescribirse como:

TA = −iAegA

θ+

i2A2

d (LA)dθdt· dt

= −iAegA

θ+

i2A2

d (LA)

dθ(2.11)

El terminoi2A2

d(LA)dθ

es muy pequeno en motores hıbridos ya que la variacion de

LA con respecto a la posicion es despreciable debido principalmente a que el rotor

es un iman permanente, haciendo mınima su contribucion al par estacionario. No

ası en los motores de VR donde el par es funcion del campo magnetico creado

solo por las bobinas, llegandose a llamar por ello, par reluctante.

Luego:

TA = −iAegA

θ(2.12)

Identicamente para la fase B:

Page 47: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 30

TB = −iBegB

θ(2.13)

Introduciendo (2.12) y (2.13) en (2.2), resulta el par instantaneo:

T = −(

iAegA

θ+

iBegB

θ

)

(2.14)

El flujo ϕ, que se establece entre el rotor y cada fase, tiene una distribucion

espacial del tipo sinusoidal, entonces:

ϕ = n · ΦM · cos (pθ) (2.15)

donde ΦM es el flujo maximo, n es el numero de espiras de cada bobinado y p es

el numero de dientes en un motor hıbrido.

Entonces, egA es la f.e.m. producida en la fase A:

egA = −dϕ

dt= −n

dt(2.16)

Derivando (2.15), respecto a θ, se obtiene:

dθ= n · p · ΦM · sen (p · θ) (2.17)

Introduciendo (2.17) en (2.16) se obtiene la fuerza-contraelectromotriz para

la fase A:

egA = − (n · p · ΦM · sen (p · θ)) θ (2.18)

De esta manera es posible obtener el par producido por la fase, TA, introdu-

ciendo (2.18), en (2.12):

Page 48: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 31

TA = −n · p · ΦM · iA · sin pθ (2.19)

De manera similar para el devanado B, el cual produce par mediante los otros

polos excitados en la seccion opuesta:

TB = −p · n · ΦM · iB · sin p (θ − λ) (2.20)

donde λ es la distancia angular entre polos y vale λ = 2π/p y el modelo del

estator tiene 2p polos magneticos, es decir, p-pares de polos.

Pude observarse en la Fig. 2.7 la ubicacion de λ en el centro del polo 1,

lo que significa que el par neto producido por la fase B, expresado por (2.20),

esta desplazado λ, ya que las bobinas que contribuyen al mismo estan en la

segunda seccion del stack.

l

Figura 2.7: Detalle del origen de coordenadas

Una vez obtenido el par mecanico, se utiliza la ecuacion mecanica de segundo

orden del motor, en donde la inercia, J , de motor y los efectos que producen la

histeresis y las corrientes parasitas representadas por el coeficiente D son tenidas

en cuenta. Queda, entonces:

Page 49: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 32

Jd2θ

dt2+ D

dt+ p · n · ΦM · iA · sin pθ + p · n · ΦM · iB · sin p (θ − λ) = 0 (2.21)

o si se reunen los coeficientes en uno solo, tal que p·n·ΦM = Km, resulta entonces:

Jd2θ

dt2+ D

dt+ KM · iA · sin pθ + KM · iB · sin p (θ − λ) = 0 (2.22)

2.4. Modelo dinamico con tensiones impuestas

La ecuacion (2.22) describe el modelo dinamico del motor paso a paso para

corrientes impuestas. El modelo dinamico con tensiones impuestas, a diferencia

del de corriente impuesta, debe tener en cuenta los efectos del circuito electrico

de los bobinados.

En la Fig. 2.8 se muestra el circuito electrico equivalente para la fase A. Del

mismo surge la (2.23):

VA − r · iA − lA · d (iA)

dt− M · d (iB)

dt+ KM · d

dt· cos (pθ) = 0 (2.23)

Identicamente para la fase B, obteniendo la (2.23):

VB − r · iB − lB · d (iB)

dt− M · d (iA)

dt+ KM · d

dt· cos (p (θ − λ)) = 0 (2.24)

Las ecuaciones (2.22), (2.23) y (2.24) constituyen el modelo dinamico del

motor con tensiones impuestas, donde se utiliza la simbologıa de la Tabla 2.3.

Page 50: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 33

Tabla 2.3: Simbologıa utilizada para el modelo de tensiones

impuestas

VA,B tension aplicada a los bobinados de la fase A y B

lA,B inductancia de la fase A y B

rA,B resistencia serie del bobinado A y B

M inductancia mutua

Donde las variables en minusculas son funciones del

tiempo.

En rA,B pueden incluirse la resistencia de salida del dri-

ver y otros efectos resistivos.

+

+

-

+

-

LA rA

VA

iA

dt

degA

j-=

dt

diM B-

Figura 2.8: Circuito equivalente por fase.

Page 51: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 34

2.5. Descripcion del modelo de corrientes im-

puestas mediante ecuaciones de estado

A fin de utilizar el modelo dinamico del motor paso a paso descrito por (2.22)

en simulaciones bajo el entorno Matlab es mas conveniente llevar el modelo en

ecuaciones diferenciales al espacio de estados, de forma de tener un conjunto de

ecuaciones del tipo:

x1 = f1(x1, x2, x3, x4)

x2 = f2(x1, x2, x3, x4)

x3 = f3(x1, x2, x3, x4)

x4 = f4(x1, x2, x3, x4)

(2.25)

La primera ecuacion es inmediata; la variable fısica de salida del modelo, es

el desplazamiento angular, por tanto:

θ = x1 (2.26)

Para la la velocidad angular:

dt= θ = x2 (2.27)

entonces:

x2 =d2θ

dt2(2.28)

Mediante (2.28), la (2.22) puede ser reescrita de la siguiente manera:

Page 52: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 35

J · x2 + D · x2 + KM · u1 · sin px1 + KM · u2 · sin p (x1 − λ) = 0 (2.29)

donde u1 y u2 son las entradas al sistema.

Resolviendo para x2 y queda:

x2 =−D · x2 − KM · u1 · sin px1 − KM · u2 · sin p (x1−λ)

J(2.30)

junto con:

x1 = x2 (2.31)

Por lo tanto el modelo escrito en forma de sistema de ecuaciones de estado

queda:

x1 = x2 (2.32)

x2 =−D · x2 − KM · u1 · sin p · x1 − KM · u2 · sin p (x1−λ)

J

Operando de la misma forma para el modelo por tensiones impuestas, asu-

miendo que r = ra = rb y que L = la = lb segun la Fig. 2.8 queda reescrito por

las siguientes ecuaciones de estado:

x1 = x2

x2 =−d·x2−KM ·u1·sin p·x1−KM ·u2·sin p(x1−λ)

J

x3 = L·u1−M ·u2−L·r·x3+M ·r·x4−KM ·L·x2·sin p·x1+KM ·M ·x2·sin p(x1−λ)L2−M2

x4 = L·u2−M ·u1+M ·r·x3−L·r·x4+KM ·M ·x2·sin p·x1+KM ·L·x2·sin p(x1−λ)L2−M2

(2.33)

Page 53: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 36

Una simplificacion importante de las ecuaciones descritas en (2.33) puede ser

realizada teniendo en cuenta que en general, los motores de uso industrial poseen

la cualidad de tener un M extremadamente bajo, lo que lo hace despreciable

frente a los demas terminos. Luego el sistema se simplifica, quedando el siguiente

sistema de ecuacion de ODE’s de primer orden:

x1 = x2 = f1(x1, x2, x3, x4)

x2 =−d·x2−KM ·u1·sin p·x1−KM ·u2·sin p(x1−λ)

J= f2(x1, x2, x3, x4)

x3 = u1−r·x3−KM ·x2·sin p·x1

L= f3(x1, x2, x3, x4)

x4 = u2−r·x4+KM ·x2·sin p(x1−λ)L

= f4(x1, x2, x3, x4)

(2.34)

donde se ha empleado la la siguiente nomenclatura:

d = F

Km = KE

Km = Kh

2.6. Validacion del Modelo

Para validar este modelo se realizaron simulaciones para diferentes tipo de

excitacion y se evaluo la performance en distintas situaciones. Los parametros del

modelo del motor a emplear en las simulaciones se obtuvieron de publicaciones de

referencia por lo que la evaluacion del comportamiento del mismo es comparativa

a estos trabajos.

Los parametros del modelo de referencia del motor son los siguientes:

Page 54: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 37

r = 45 Ω

p = 12

d = 10−4 Nms

rad

M = 0

L = 0,275 H

Km = 0,463 Nm

A

Kd = 0,016 N m

J = 18 · 10−6 kg m2

Para resolver el sistema de ecuaciones planteado en (2.34) se utilizo Matlab.

El motor se excita con un esquema de pulsos que produce un perfil de velocidad

trapezoidal. La temporizacion de los pulsos de excitacion es introducido en el

Capıtulo 4 mientras que el perfil trapezoidal es definido en detalle en el Capıtulo

3. Las caracterısticas relevantes del perfil trapezoidal son las siguientes: durante

el primer tramo del perfil la velocidad crece una pendiente constante, durante un

tiempo en este caso de 0,45 s. Luego la velocidad se estabiliza en 100 pps durante

0,10 s para luego decrecer con una pendiente constante durante 0,45 s. El perfil de

velocidad debe producir un desplazamiento de 172 pasos, es decir, una promedio

de 86 pps.

En funcion a los datos relevados de este maquina, tanto en la bibliografıa como

en la experiencia de trabajo con la misma es esperable que el mismo tenga un buen

comportamiento para velocidades menores que los 100 pps. Para comprobar esto,

se analizara tanto la curva de posicion del perfil trapezoidal requerido, Fig. 2.9(a),

como la posicion resultante, Fig. 2.9(b).

Page 55: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 38

Se puede apreciar en la Fig. 2.9(b) que bajo ringing controlado, la posicion

no se ve afectada; el perfil es ejecutado correctamente. Incluso si se magnifica

la curva de posicion, para poder observar un paso en detalle, se observa que la

relacion entre el sobrepico del ringing y el paso esta determinada.

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

10

20

30

40

50

60

70

80

Posición. Vmáx

= 100 pps. Ti = 2e−005 s.

Pas

os

Tiempo, [s]

(a) Perfil de posicion requerido.

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

0

10

20

30

40

50

60

70

80

Posición. Vmáx

= 100 pps. Ti = 2e−005 s.

Pas

os

Tiempo, [s]

(b) Perfil de posicion obtenido.

Figura 2.9: Perfil de posicion, donde puede apreciarse que el ringing no afecta ala posicion.

En la Fig. 2.10 es posible apreciar el ringing del paso con mayor detalle. Este

motor presenta un ringing en el paso que no afecta el desenvolvimiento del perfil,

no solo porque la oscilacion del mismo tiene una baja amplitud con respecto

al paso, sino porque incluso a la maxima velocidad, el mismo no perturba la

ejecucion de un nuevo paso.

Cuando la velocidad pretendida del accionamiento aumenta, el ringing afecta

aun mas al perfil de posicion, esto es debido a que el tiempo para realizar un paso

es menor a medida que aumenta la velocidad, segun:

tstep =1

fs

=1

v(2.35)

Page 56: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 39

0.57 0.572 0.574 0.576 0.578 0.58 0.582 0.584

44.5

45

45.5

46

46.5

Posición. Vmáx

= 100 pps. Ti = 2e−005 s.

Pas

os

Tiempo, [s]

Figura 2.10: Caracterıstica del paso donde el impacto del ringing es mınimo.

donde: fs, frecuencia de pulsos de control provenientes del driver, v, velocidad del

motor, en pasos por segundo.

A continuacion se simula la maquina con un perfil de velocidad trapezoidal

en la zona de velocidades medias que se extiende desde los 100 pps hasta los

2500 pps. Para esta nueva simulacion, se utilizan las mismas condiciones de inercia

y parametros de ensayo. En la Fig. 2.11(a) se observa el motor dentro de rango de

Ts, cuya velocidad maxima es de 760 pps. Este perfil de velocidad debe producir

1368 pasos en total, es decir, una promedio de de 684 pps. Se aprecia en la misma

figura como el motor simplemente perdio pasos, y sencillamente no pudo seguir

el perfil requerido.

Si la curva de posicion es magnificada hasta un tiempo proximo a 0,3 segundos,

se vera que el motor simplemente no puedo seguir el ritmo requerido. En esta zona,

mostrada en la Fig. 2.11(b), el perfil trapezoidal obligaba al motor a crecer su

velocidad desde cero a 760 pps, cosa que no puedo lograr con la inercia de carga

Page 57: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 40

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

200

400

600

800

1000

1200

1400

1600

Posición. Vmáx

= 760 pps. Ti = 1e−006 s.

Pas

os

Tiempo, [s]

(a) Perfil de posicion afectado por el ringing.

0.05 0.1 0.15 0.2

−10

0

10

20

30

40

50

60

70

80

90

Posición. Vmáx

= 760 pps. Ti = 1e−006 s.

Pas

os

Tiempo, [s]

(b) Detalle del ringing en el perfil de posicion.

Figura 2.11: Perfil de posicion, donde puede apreciarse aquı como el ringing afectaa la posicion.

simulada. Es decir, a velocidades mayores el motor puede enfrentar situaciones con

mayor momento de inercia que a menores velocidades, provocandose la perdida

de pasos. Esto se explica ya que al poseer mas inercia el motor trabaja sub-

amortiguado lo que reduce significativamente el ringing, evitandose ası la perdida

de pasos.

2.7. Conclusiones

En el presente capıtulo se plantean las ecuaciones que gobiernan el desplaza-

miento angular del rotor de un motor paso a paso del tipo hıbrido. La utilidad

principal de disponer un modelo dinamico del mismo es el ensayo sistematico de

los diferentes perfiles de velocidad. Se elige el motor paso a paso tipo hıbrido

ya que el mismo es una generalizacion de las dos principales familias de motores

los de reluctancia variable (VR) y los de iman permanente (PM). Se planteo un

modelo con dos tipo de configuraciones en las variables de entrada, en uno las

corrientes son controlados resultando en un modelo con corrientes impuestas. En

Page 58: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 41

el segundo modelo, es la tension la variable de entrada controlada, por lo que

se obtiene un modelo con tensiones impuestas. Para ambos casos la variable de

salida es la posicion angular. Una vez obtenidas las ecuaciones de estado, el mo-

delo no-lineal resultante se simulo con Matlab, utilizando diferentes perfiles de

velocidad a modo de validacion del modelo.

Este modelo, basado en ecuaciones diferenciales no-lineales fue validado el

modelo a traves de exhaustivas simulaciones y comparaciones de las mismas con la

bibliografıa, el modelo fue usado en los posteriores capıtulos del trabajo doctoral,

ası como en la mayorıa de los trabajos publicados. Se escribio un reporte y se

difundieron los archivos que perteneces a este trabajo en:

“Stepper Motor ToolBox for Matlab v1.0”, Math Works web site: http:

//www.mathworks.com/matlabcentral/.

Page 59: Tesis_Gonzalez_Sergio.pdf

Capıtulo 2. Modelado del Motor de Accionamiento Incremental 42

Referencias

Keyhani, A. and Proca, A. B. (1999). A virtual testbed for instruction and designof permanent magnet machines. IEEE Trans. Power Syst., 14(3):795–801.

Kikuchi, T., Kenjo, T., and Fukuda, S. (2002). Developing an educational simu-lation program for the PM stepping motor. IEEE Trans. Educ., 45(1):70–78.

K.M.Feiertag and J.T.Donahoo (1952). Dynamoelectric machine.

Pickup, I. and Russell, A. (1980). A model for predicting the dynamic characte-ristic of hybrid (permanent-magnent) synchronous/stepping motors. In Kuo,B. C., editor, Proceedings of the 9th Annual Symposium, Incremental MotionControl System and Devices, pages 1–13, Champaign, Illinois. Incremental Mo-tion Control System Society.

Singh, G. (1974). Mathematical modeling of step motors. In Kuo, B. C., editor,Theory and Applications of Step Motors - Symposium on Incremental MotionControl Systems and Devices, 1972-1973, volume 8, pages 59–72, St. Paul,Illinois. West Publishing Co.

Page 60: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3

Perfiles de movimiento en

accionamientos incrementales

Los perfiles de movimiento definen la trayectoria del vector posicion, velocidad

o aceleracion en funcion del tiempo. El uso de perfiles surge de la necesidad de

asegurar que las aceleraciones impuestas al conjunto motor-carga exijan un par

de carga menor que el par electrico maximo del motor. En los accionamientos

incrementales donde una de las ventajas reside en la operacion a lazo abierto, los

perfiles de velocidad aseguran movimientos sin perdidas de pasos.

Existen diferentes tipos de perfiles; historicamente el perfil exponencial tuvo

gran aplicacion debido a que la referencia exponencial era facilmente obtenible

desde un simple circuito RC. Luego, con el advenimiento de los sistemas digitales,

los perfiles lineales de facil calculo como los triangulares y trapezoidales fueron los

mas usados (Fredriksen, 1974). Sin embargo, las discontinuidades producidas en

la aceleracion de los perfiles trapezoidal y exponencial causan una reduccion de

la vida util tanto del motor como del sistema mecanico acoplamiento-carga (Gei-

ger, 1980). Actualmente, debido a caracterısticas de aceleracion y su derivada, los

perfiles con curvas suaves como el parabolico, el sinusoidal y el perfil basado en

43

Page 61: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 44

curvas-S son implementados en los sistemas de control de movimientos, aunque

los mismos presenten desventajas, como una mayor lentitud y dificultades en la

implementacion (Hyung-Min and Seung-Ki, 2002)(M.C.Tsai et al., 2004). Adicio-

nalmente, en un amplio espectro de aplicaciones del control de movimiento, que

van desde el uso en los simuladores de aereo-navegacion en donde la sensacion de

movimiento debe lograrse sin llegar a producir motion sickness (Kolasinski, 1995)

(de la Cruz et al., 2004), ascensores con movimientos de aceleracion controlada

bajo normas sonoras y de vibraciones (Gibson, 1997); hasta en las maquinas de

tejer industriales donde el objetivo es realizar la mayor cantidad de movimientos

minimizando la trayectoria posible a una velocidad dada, es importante aplicar

el perfil de velocidad apropiado.

3.1. Perfiles de Velocidad

Se puede vislumbrar que existen varios parametros y variables a considerar

para poder determinar el perfil mas conveniente segun sea la aplicacion. En este

sentido, un estudio suficientemente general que contemple las diferentes alter-

nativas a fin de determinar cual es el mejor perfil cuando se requiere optimizar

determinadas caracterısticas del movimiento. Para ello es necesario realizar sis-

tematicamente un conjunto de comparaciones con el objetivo de encontrar las

ventajas de cada perfil y lograr obtener el mejor perfil segun la necesidad.

A continuacion se presentan los distintos perfiles y sus ecuaciones y, en la

seccion 3.2 se desarrollan analıticamente las comparaciones de los perfiles men-

cionados.

Page 62: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 45

3.1.1. Perfil trapezoidal

Se muestra en la Fig. 3.1 el perfil velocidad trapezoidal. La ecuacion de velo-

cidad se expresa en (3.1)

v(t)

tTa

desaceleración

máxima velocidad

área = distancia (d)aceleración

Ts Td Tn

Figura 3.1: Perfil de velocidad trapezoidal.

v(t) =

VmaxtTa

, 0 < t < Ta

Vmax , Ta < t < Ta + Ts

Vmax

(

1 − t−(Ts+Ta)Td

)

, Ta + Ts < t < T

(3.1)

donde

Ta tiempo de aceleracion,

Ts tiempo de velocidad maxima,

Td tiempo de desaceleracion,

T tiempo total,

Vmax velocidad maxima.

El desplazamiento total recorrido por el motor, D, surge de∫ T

0v(t) dt, y resulta

en (3.2)

D = Vmax

(

Ta

2+ Ts +

Td

2

)

(3.2)

Page 63: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 46

La aceleracion instantanea es la derivada de la velocidad y se muestra en (3.3):

a(t) =

Vmax1Ta

0

−Vmax

Td

, 0 < t < Ta

, Ta < t < Ta + Ts

, Ta + Ts < t < T

(3.3)

Por lo apreciado en (3.3) se arriba a la aceleracion maxima que se expresa en

(3.4)

|amax| =

Vmax

Ta, Td < Ta

Vmax

Td, Ta < Td

(3.4)

3.1.2. Perfil exponencial

En la Fig. 3.2 se observa el perfil exponencial. La velocidad instantanea

esta expresada por (3.5)

v(t) =

Vmax

(

1 − e−5 tTa

)

Vmax

Vmaxe−5

t−(Ta+Ts)Td

, 0 < t < Ta

, Ta < t < Ta + Ts

, Ta + Ts < t < T

(3.5)

v(t)

t

desaceleración

área = distancia (d)máxima velocidad

aceleración

Ta Td Tn

Figura 3.2: Perfil de velocidad exponencial.

El desplazamiento total del motor comandado con un perfil exponencial es:

Page 64: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 47

D = Vmax

[

Ts +1

5Ta(e

−5 + 4) − 1

5Td(e

−5 − 1)

]

(3.6)

En cuanto a la aceleracion instantanea:

a(t) =

5Vmax

Tae−5 t

Ta , 0 < t < Ta

0 , Ta < t < Ta + Ts

−5Vmax

Tde−5

t−(Ta+Ts)Td , Ta + Ts < t < T

(3.7)

De (3.7) se infiere que la aceleracion maxima depende de la magnitud del

tiempo de aceleracion o desaceleracion, ya que cuanto menor es el mismo, mayor

es efectivamente la aceleracion maxima, como se observa en (3.8).

|amax| =

5Vmax

Td, Td < Ta

5Vmax

Ta, Ta < Td

(3.8)

3.1.3. Perfil parabolico

El perfil parabolico se muestra en la Fig. 3.3. La velocidad se define en (3.9),

la cual es continua a lo largo del perıodo de movimiento, T .

v(t) = 4Vmax

t

T 2(T − t) (3.9)

Este es un perfil simetrico, donde el tiempo de aceleracion y desaceleracion

valen Ta = Td = T2. Esta observacion se aplica tambien a los perfiles sinusoidal

y con curvas-S, aunque sin estar definido este ultimo por una unica curva. El

desplazamiento total del motor, en funcion de la velocidad maxima, se expresa

en (3.10):

D =2

3VmaxT (3.10)

Page 65: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 48

v(t)

t

desaceleración

área = distancia (d)máxima velocidad

aceleración

Ta Td Tn

Figura 3.3: Perfil parabolico.

La aceleracion instantanea se expresa por la (3.11)

a(t) = Vmax

4

T 2(T − 2t) (3.11)

La aceleracion maxima tiene lugar en t = 0 y en t = T , siendo |amax| = 4Vmax

T.

3.1.4. Perfil sinusoidal

Se muestra en la Fig. 3.4. La velocidad instantanea, se aprecia en (3.12).

v(t)

tTa

desaceleración

área = distancia (d)

máxima velocidad

aceleración

Td Tn

Figura 3.4: Perfil sinusoidal.

v(t) =Vmax

2

(

1 − cos2π

Tt

)

(3.12)

Page 66: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 49

El desplazamiento total se expresa en (3.13):

D =Vmax

2T (3.13)

La aceleracion instantanea del perfil queda expresada por (3.14):

a(t) = Vmax

π

Tsin 2π

t

T(3.14)

La aceleracion instantanea, expresada por (3.14), posee un maximo en t = T4,

por lo que |amax| = πTVmax.

3.1.5. Perfil con curvas-S

Un perfil de curvas-S, se obtiene al trazar una spline cubica (Greenspan and

Casulli, 1988)(Hildebrand, 1987) que una los puntos (0, 0), (T2, Vmax) y (T, 0)

obteniendose la velocidad instantanea definida por tramos que se muestra en

(3.15) y cuya evolucion temporal es practicamente identica al perfil sinusoidal,

con una diferencia maxima de solo 0,12 % respecto a este.

v(t) =

4Vmax

(

3T 2 t

2 − 4T 3 t

3)

4Vmax

T 3 (T − t)2(4t − T )

, 0 < t < T2

, T2

< t < T(3.15)

El desplazamiento total vale:

D =Vmax

2T (3.16)

La aceleracion queda expresada por:

a(t) =

24VmaxtT−2tT 3

24VmaxT 2−3Tt+2t2

T 3

, 0 < t < T2

, T2

< t < T(3.17)

Page 67: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 50

Para obtener la aceleracion maxima se debe encontrar el tiempo en donde la

pendiente de velocidad sea maxima, resultando que t = T4. Entonces, la acelera-

cion maxima se expresa en (3.18):

|amax| = a(t)|t=T4

=3

TVmax (3.18)

Page 68: Tesis_Gonzalez_Sergio.pdf

Cap

ıtulo

3.Perfi

lesde

mov

imien

toen

accionam

ientos

increm

entales

51

Tabla 3.1: Resumen de los diferentes perfiles de velocidad.Triangular Exponencial Parabolico Senoidal Curva-S

Vmax = 2DT

Vmax = 2DT

Vmax = D23T

Vmax = 2DT

Vmax = 2DT

Vmax=

√amaxD Vmax =

15amaxD Vmax =

38amaxD Vmax =

2πamaxD Vmax =

23amaxD

amax = 4T 2 D |amax| = 20

T 2 D amax = 6T 2 D amax = 2π

T 2 D amax = 6T 2 D

v(t)

tTa Td

Vmáx

v(t)

tTa Td

Vmáx

v(t)

tTa Td

Vmáx

v(t)

tTa Td

Vmáx

v(t)

tTa Td

Vmáx

Page 69: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 52

3.2. Estudio Comparativo

Se realiza a continuacion un analisis comparativo entre perfiles tomando como

exigencia comun que la distancia a recorrer sea la misma. Este requerimiento es

realista en pos del diseno de un sistema de control de movimientos en el que se

conoce a priori la distancia a recorrer, siendo incognitas el resto de los factores

cinematicos.

Con la intencion de simplificar la notacion pero sin perder generalidad, se

asumira para todos los perfiles que el Ts es nulo y que el tiempo de la aceleracion

es identico al de desaceleracion e igual a la mitad del tiempo total. Es decir:

Ta = Td = T2, que es el caso mas tıpico encontrado en los sistemas de control de

movimientos. En estas condiciones y a partir de las ecuaciones (3.1) a (3.18) se

obtiene la Tabla 3.1, las que en definitiva serviran a los efectos comparativos.

3.2.1. Comparacion a igual perıodo de movimiento

Se considera, a continuacion, el caso en el que el tiempo total del desplaza-

miento esta restringido. Por lo tanto se realiza una primera comparacion en la

que ademas del mismo desplazamiento, se establece un mismo tiempo de ejecu-

cion para todos los perfiles. El objetivo es conocer, bajo estas circunstancias, la

evolucion de las variables basicas del movimiento como son velocidad maxima,

aceleracion y su derivada, para los distintos perfiles.

A partir de las ecuaciones de la Tabla 3.1 y con T = 20 s y d1 = 10000 pasos,

se realizaron simulaciones en Matlab. Los resultados se pueden observar en

la Fig. 3.5. De los mismos se puede concluir que todos los perfiles desarrollan

la misma velocidad maxima excepto el parabolico que, en este sentido, es mas

ventajoso ya que permite el mismo movimiento, en el mismo tiempo, pero con

menor velocidad maxima. Esta informacion es util a la hora de disenar un sistema

Page 70: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 53

que requiera realizar un movimiento determinado pero con actuadores mecanicos

restringidos tambien en velocidad. Lo expresado se resume en (3.19) y ademas se

detalla cuantitativamente en la Tabla 3.2.

Tabla 3.2: Velocidades maximasVtrg = 2 · k1

Vexp = 2 · k1

Vpar = 1,5 · k1

Vsen = 2 · k1

VS−c = 2 · k1

donde k1 = d1

T.

0 2 4 6 8 10 12 14 16 18 200

50

100

150

200

250

300

350

400

Perfil de velocidad, Ta = 10 s, T

d = 10 s, D

total = 4000 pasos

Vel

ocid

ad, [

paso

s/s]

Tiempo, [s]

dc

b

e

a

Figura 3.5: Comparacion realizada en el mismo tiempo.

Vpar < Vtrg = VS−c = Vsen = Vex (3.19)

Page 71: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 54

Ademas de la velocidad maxima, es importante analizar otros parametros

cinematicos, como por ejemplo la aceleracion. Esta magnitud esta limitada por

las caracterısticas de la carga y del par electrico maximo del motor. Su evolucion

temporal puede observarse en la Fig. 3.6.(a) donde a, b, c, d, y e representan a los

perfiles exponencial, senoidal, curvas-S, triangular y parabolico respectivamente.

La aceleracion maxima del perfil exponencial es mayor que en el resto de los

perfiles, mientras que la aceleracion maxima del perfil triangular es la menor de

todas. El resto de los perfiles posee aceleraciones maximas similares.

2 4 6 8 10 12 14 16 18−200

−150

−100

−50

0

50

100

150

Perfil de aceleración

Ace

lera

cion

, [P

asos

/s2 ]

2 4 6 8 10 12 14 16 18

−5

0

5

Perfil del jerking

Jerk

ing,

[Pas

os/s

3 ]

Tiempo, [s]

a

b c

a, d, e

e

a

b c d

e

a, d, e

d

a, e

Figura 3.6: Caracterıstica de aceleracion y jerking.

Lo expresado se puede resumir en (3.20) y se detalla cuantitativamente en

la Tabla 3.3 donde se muestran las aceleraciones maximas para los diferentes

perfiles.

Page 72: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 55

Tabla 3.3: Aceleraciones maximasatrg = 4 · k2

aexp = 10 · k2

apar = 6 · k2

asen = 2π · k2

aS−c = 6 · k2

donde k2 = d1

T 2 .

atrg < apar = aS−c < asen ≪ aex (3.20)

En la Fig. 3.6.(a) se muestra ademas la performance de aceleracion que pro-

ducen los perfiles sinusoidal y de curvas-S en cuanto a sus caracterısticas suaves.

Este concepto esta contemplado en otra magnitud cinematica importante que es

el jerking. El mismo se define como la derivada de la aceleracion, j(t) = ddt

a(t);

en la literatura anglosajona se la conoce con el nombre de jerk 1. El jerking es

crıtico para la minimizacion de las vibraciones en las maquinas y esta directamen-

te ligado al estres mecanico, desgaste y progresivo deterioro de los componentes

mecanicos de las mismas. Estos pueden ocurrir cuando la cadencia de cambio de

la aceleracion del servo sistema es demasiado grande o discontinua (infinita). La

dinamica del jerking puede verse en la Fig. 3.6.(b), donde las deltas representan

el impulso de cambio de aceleracion.

El perfil exponencial y triangular tienen las caracterısticas de jerk de mayor

amplitud mientras que las curvas suaves, tienen las menores. La existencia de

las deltas, principalmente al comienzo y al fin del movimiento es principalmente

crıtica, pues cuando comienza el movimiento del movil partiendo del reposo, la

aceleracion debe ser maxima para poder iniciar el movimiento, es ahı donde los

1Una traduccion posible de jerk serıa tiron o movimiento convulsivo. El termino fue in-troducido por primera vez dentro del contexto de control de movimientos por Hanitsch andSchmidt-Milkau (1988) para el control de ascensores de alta performance.

Page 73: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 56

perfiles mencionados impactan mas en la performance, agregando un exigente

requerimiento.

Las caracterısticas propias del jerk para cada perfil, son independientes de los

parametros del mismo, lo que significa que la velocidad maxima, el perıodo de los

desplazamiento, etc, no cambian la existencia de los impulsos de aceleracion. Se

concluye que cuando se requieran la minimization o incluso la anulacion de estos

impulsos, los perfiles con curvas suaves son requeridos.

3.2.2. Comparacion a igual amax

A continuacion se realizara un analisis comparativo en el que, ademas de

igual desplazamiento para todos los perfiles, se impondra la condicion de igual

aceleracion maxima. Esta restriccion es razonable ya que normalmente es deseable

realizar movimientos en el menor tiempo posible y, por ende, tratar de operar a

la maxima aceleracion.

Bajo estas condiciones, con a3 = 4000pasoss2

y d3 = 10000 pasos, se realizaron

simulaciones cuyos resultados se pueden observar en la Fig. 3.7.

Como primera observacion, existe una diferencia importante en cuanto al tiem-

po que demora cada uno de los perfiles, que se puede resumir en la siguiente

conclusion.

Ttrg < Tpar = Tsen = TS−c ≪ Tex (3.21)

donde Ttrg es el tiempo del desplazamiento del perfil exponencial, Tsen es el del

sinusoidal, Tpar es el del parabolico, TS−c es el de curvas-s y Tex es el del exponen-

cial. A efectos de disponer de resultados precisos, se realiza una tabla comparativa

de los tiempos totales de desarrollo del movimiento, Tabla 3.4.

donde k3 =√

d3

a3.

Page 74: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 57

0 1 2 3 4 5 6 70

1000

2000

3000

4000

5000

6000

Perfil de velocidad, amáx

= 4000 pasos/s2, Dtotal

= 10000 pasosV

eloc

idad

, [pa

sos/

s]

Tiempo, [s]

a

b

c

d

e

Figura 3.7: Comparacion con aceleraciones constantes

Por lo tanto, cuando se requiera un desplazamiento rapido, es indudable que el

perfil mas conveniente es el trapezoidal y el peor el exponencial, siendo similares

los perfiles parabolico, sinusoidal y de curva-S. A los efectos practicos podrıa

considerarse que el parabolico es el mas indicado de los tres ultimos ya que se

aprecia que es el de menor velocidad maxima. Esto introduce la importancia de

analizar la velocidad maxima. La Fig. 3.7 permite apreciar que:

Vex < Vpar < Vsen∼= VS−c < Vtrg (3.22)

Se aprecia que el trapezoidal es el de mayor velocidad maxima mientras que el

exponencial es el menos exigente. Esto indica una superioridad a la hora de elegir

Page 75: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 58

Tabla 3.4: Tiempos totalesTtrg = 2 · k3

∼= 2 · k3

Texp =√

20 · k3∼= 4,472 · k3

Tpar =√

6 · k3∼= 2,449 · k3

Tsen =√

2π · k3∼= 2,506 · k3

TS−c =√

6 · k3∼= 2,449 · k3

entre los mismos, cuando la aplicacion imponga restricciones de velocidad.

Los resultados anteriores se pueden verificar cuantitativamente a partir de las

ecuaciones de la Tabla 3.1, obteniendose la Tabla 3.5.

Tabla 3.5: Velocidades maximasVtrg = k4 = k4

Vexp =√

15· k4

∼= 0,4472 · k4

Vpar =√

38· k4

∼= 0,612 · k4

Vsen =√

2π· k4

∼= 0,797 · k4

VS−c =√

23· k4

∼= 0,816 · k4

donde k4 =√

d4a4.

3.2.3. Comparacion a igual Vmax

Si se precisa mantener nuevamente un mismo desplazamiento en todos los

perfiles con una velocidad maxima determinada, deseandose conocer cual requiere

el menor tiempo, se puede inferir de la Fig. 3.5 que, debido a la menor velocidad

que el perfil parabolico requiere para completar un movimiento, este necesitarıa

por ende un menor tiempo para completarlo a igual velocidad maxima. En la

(3.23) se resumen estos resultados analıticos bajos las condiciones mencionadas.

Tpar < Tex∼= Tsen

∼= TS−c∼= Ttrg (3.23)

Page 76: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 59

3.2.4. Resumen de las comparaciones

A partir de las comparaciones realizadas, se concluye que el perfil exponencial

es el mas desventajoso en aplicaciones con restricciones de tiempo, aceleracion o

velocidad, por lo tanto queda descartado para cualquier implementacion practi-

ca. Los demas perfiles poseen caracterısticas que los hacen ventajosos sobre el

resto, segun sea la aplicacion. Ejemplo de esto es la conveniencia del perfil trape-

zoidal cuando el movimiento se debe desarrollar lo mas rapidamente posible, el

parabolico es el mas apropiado cuando existen restricciones de velocidad maxima

y el sinusoidal o de curvas-S cuando se desea el menor jerking.

3.3. Conclusiones

Se expusieron los desarrollos de los perfiles mas usados en la practica expo-

niendo una definicion generalizada de los mismos de forma de particularizarlos

para la aplicacion. Luego, se procedio a una comparacion sistematica que abarca

todas las variables dinamicas como cinematicas de los perfiles de movimiento. En

este sentido, se determino el perfil mas adecuado en cuanto a: la menor velocidad

maxima a desarrollar, la menor aceleracion maxima, o el mınimo jerking cuando

los parametros como la distancia y el tiempo de movimiento estan impuestos.

Se continuo seguidamente con la definicion de comparaciones que permitan en-

contrar el perfil que desarrolla la menor velocidad maxima o el menor tiempo

cuando se requiere un desplazamiento a desarrollar con una aceleracion maxima

impuesta.

Page 77: Tesis_Gonzalez_Sergio.pdf

Capıtulo 3. Perfiles de movimiento en accionamientos incrementales 60

Referencias

de la Cruz, J., Aranda, J., Giron-Sierra, J., Velasco, F., Esteban, S., Diaz, J.,and de Andres-Toro, B. (2004). Improving the comfort of a fast ferry. IEEEControl Syst. Mag., 24(2):47–60.

Fredriksen, T. (1974). Design of digital control systems with step motors. InKuo, B. C., editor, Theory and Applications of Step Motors - Symposium onIncremental Motion Control Systems and Devices, 1972-1973, volume 8, pages290–315, St. Paul, Illinois. West Publishing Co.

Geiger, D. F. (1980). A simplified digital positioning system. In Kuo, B. C., editor,Ninth Annual Symposium Incremental Motion Control Systems and Devices,IMCSS’80, volume 9, pages 281–288, St. Paul, Illinois. West Publishing Co.

Gibson, G. W. (1997). Instantaneous maximum kinetic energy of horizontally sli-ding passenger elevator door systems. Technical Report 1027, Elevator World.

Greenspan, D. and Casulli, V. (1988). Numerical Analysis for Applied Mathema-tics, Science and Engineering. Addison-Wesley, Redwood City, California.

Hanitsch, R. and Schmidt-Milkau, C. (1988). Contribution to state control forelevator systems with respect to parameter variation and nonlinearity. In Pro-ceedings of the IEE 3rd International Conference on Power Electronics andVariable-Speed Drives, pages 319–323, London, UK.

Hildebrand, F. (1987). Introduction to Numerical Analysis. Unabridged Dover,New York City, New York.

Hyung-Min, R. and Seung-Ki, S. (2002). Position control for direct landing of ele-vator using time-based position pattern generation. In Proceedings of the 37thIAS Annual Meeting. Conference Record of the Industry Applications Confe-rence, 2002, volume 1, pages 644–649, Pittsburgh, PA.

Kolasinski, E. M. (1995). Simulator sickness in virtual environments. TechnicalReport 1027, U.S. Army Research Institute.

M.C.Tsai, I.F.Chiu, and M.Y.Cheng (2004). Design and implementation of com-mand and friction feedforward control for CNC motion controllers. IEE Pro-ceedings Control Theory and Applications, 151(1):13–20.

Page 78: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4

Temporizacion de los pulsos de

accionamiento

Un sistema de accionamiento para maquinas de movimiento incremental in-

dustriales esta formado por el controlador digital de movimientos, el driver de

potencia y el o los motores.

El controlador digital de movimientos genera los perfiles de movimiento en

funcion de parametros tales como aceleracion maxima, carga, velocidad maxima,

distancia, tiempo, entre otros. Como se establecio en el Capıtulo 1, es necesario

tener perfiles de velocidad que establezcan una determinada dinamica de carga

a fin de obtener movimientos sin perdidas de paso. El perfil pueden estar pre-

establecido (off-line) o ser modificado en tiempo real (on-line) tanto por una

entrada al sistema o por accion de un controlador de jerarquıa superior, host. En

los sistemas de control complejos, donde puede haber cientos de motores en lınea,

es el host el que modifica el perfil para cada eje controlado, de forma de producir

un movimiento determinado.

Una vez establecido el tipo de perfil de movimiento, el controlador de movi-

miento envıa los pulsos al driver del motor. A este tren de pulsos que determina

61

Page 79: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 62

la velocidad instantanea se lo conoce como pulsos de accionamiento o de veloci-

dad. El espaciamiento entre los pulsos determina la velocidad instantanea del eje,

a este espaciamiento se lo conoce como temporizacion. Con cada pulso enviado,

una secuencia de accionamiento es generada para el accionamiento de un paso.

Un esquema de este sistema puede observarse en la Fig. 4.1, donde el controla-

dor es esquematizado por el generador de perfiles y el indexador. El indexador

comanda un nuevo paso con cada pulso recibido. Es este ultimo el que arma las

distintas secuencias de accionamiento al motor, segun el modo de accionamiento,

paso, medio paso o micropaso. Estas, a traves de la etapa de potencia, produciran

la ejecucion del paso en la maquinas.

Indexador

Generadorde perfil demovimiento

Controlador Motor paso a paso

Drivers dePotencia

Figura 4.1: Esquema de un sistema de control de movimiento para maquinas demovimiento incremental.

Un sistema digital debe calcular el tiempo entre paso y paso acorde al perfil

de velocidad requerido. En sistemas con µP, un modulo de temporizacion (timer)

es cargado con una palabra digital equivalente al tiempo que se desea establecer.

Una vez que el temporizador ha culminado el tiempo prefijado se produce un

pulso de accionamiento y el µP ya debe tener calculado el proximo tiempo que

es cargado en el timer. Una Fig. que ilustra el proceso de un basico controlador

digital de accionamiento es el que se ve en la Fig. 4.2. Al tiempo de calculo, es decir

el tiempo que al procesador le toma calcular un nuevo tiempo, se lo denomina

Page 80: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 63

tiempo de procesamiento, Tc. En general el Tc de un procesador es constante para

un perfil y parametros determinados, pero es funcional a la tecnologıa utilizada.

Dti

k

k

t

i0 i1 i2 i5i3 i6i4 i7 i8 i9 i10

Tc9Tc8Tc7Tc6Tc5Tc4Tc3Tc2 Tc10

i(k)

v(t)

VS

V /2S

V /3S

V /4S

Figura 4.2: Velocidad, pulsos ındice y localizacion temporal del calculo propia-mente dicho para el δi. El calculo, Tci, siempre se retrasa una iteracion y en estecaso se lo asume constante para todo el perfil de velocidad.

A continuacion se realiza un analisis de los principios de la temporizacion y

de las ecuaciones que gobiernan la generacion de los tiempos.

4.1. Sistemas de Temporizacion

En los primeros controladores de movimientos para maquinas incrementales,

el perfil de movimiento era un arreglo logico o incluso un generador de rampa

analogico. Esta senal alimentaba luego a un indexador, que la transformaba en

un tren de pulsos que eran enviados al driver.

En los sistemas actuales, Oriental Motor U.S.A. Corp. (2005), Pacific Scientific

(2005), el generador de perfil y el indexador de pulsos forman una sola unidad. Con

Page 81: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 64

fines didacticos, es util conservar una separacion entre la temporizacion del perfil

de velocidad y los pulsos enviados al indexador. Esta separacion es la que permite

definir una teorıa para poder encontrar, en funcion a una funcion arbitraria, la

temporizacion de los pulsos que comandaran el movimiento de la maquina.

La teorıa que a continuacion se desarrolla es original a partir del trabajo de

Kenjo and Sugawara (1995). Se establece una metodo de temporizacion que es

independiente de tipo de perfil de velocidad a comandar y de la tecnologıa de

implementacion.

Surge la necesidad de establecer el tiempo entre pulsos ındice, en funcion de

un perfil de velocidad dado.

4.1.1. Temporizacion

La temporizacion de lo pulsos es inversamente proporcional a la velocidad,

ya que dado un instante cualquiera, en el i-esimo paso incremental, la velocidad

esta dada por:

vi(t) =1

∆ti(4.1)

Dado que el comando de velocidad v(t) puede adoptar cualquier forma, y en

particular, perfiles como fueron definidos en el Capıtulo 3, es necesario encontrar

la temporizacion de los pulsos que son enviados al indexador. Mediante el modelo

del motor es posible calcular la temporizacion optima de los pulsos de acciona-

miento teniendo en cuenta la carga mecanica, como previamente se desarrollo en

el Capıtulo 2. Sin embargo, se desea desarrollar una teorıa que establezca la tem-

porizacion de los pulsos de accionamiento cualquiera sea el perfil de velocidad, sin

tener en cuenta la dinamica propia del motor y de la carga, de manera simplificar

la generacion tanto on-line como off-line de los perfiles de velocidad. Al no tener

Page 82: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 65

en cuenta en los calculos la dinamica del propio accionamiento y de la carga, es

necesario que el par requerido este por debajo de la curva de pull-in para que el

accionamiento incremental no pierda pasos. Requerimiento que es facil de cumplir

ya que en el gran porcentaje de aplicaciones industriales, los accionamientos son

seleccionados para una tarea especıfica, teniendo en cuenta para ello la curva del

par en funcion de la velocidad con un apreciable margen de seguridad. Ademas de

esto, el accionamiento debe ser capaz de comenzar el movimiento a la velocidad

mınima requerida.

4.2. Un metodo de temporizacion

Es necesario encontrar ecuaciones que, en funcion de un perfil de velocidad

dado, establezcan la temporizacion de los pulsos y el espaciamiento de los mis-

mos. En la siguiente seccion se presenta una marco general para el desarrollo

de ecuaciones que permitan hallar estas magnitudes teniendo como objetivo, las

siguientes caracterısticas:

1. Debe tenerse como incognita principal el numero de pasos, n.

2. Debe ser posible generar los perfiles de velocidad tanto de forma on-line

como off-line.

El requerimiento planteado en el punto 1 hace necesario que las soluciones a

encontrar tengan una estructura algebraica. En los perfiles de velocidad plantea-

dos (ver capıtulo 3.1), todos los coeficientes son racionales y enteros, pero debido

a que la incognita es de orden distinto a uno, las ecuaciones resultantes seran, en

general, ecuaciones algebraicas irracionales.

El punto 2 plantea que el marco de trabajo a desarrollar debe ser lo suficien-

temente amplio para poder producir perfiles de velocidad que puedan ser tanto

Page 83: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 66

off-line como on-line. En la generacion off-line de los perfiles de velocidad, la

temporizacion es pre-computada e ingresada al controlador en forma de tabla o

medio de almacenamiento extraıble. En la generacion on-line el perfil es compu-

tado a medida que se genera por el mismo controlador. En este ultimo caso, el

controlador hace las funciones tanto de generacion del perfil como de indexacion

de los pulsos, por lo que las ecuaciones deben tener baja complejidad numerica.

En primer lugar, se plantea el marco de trabajo y se desarrollan las ecuaciones

de temporizacion para una rampa de velocidad (aceleracion constante).

4.2.1. Aceleracion constante

Sean los pulsos de velocidad1, f(t), una funcion definida por tramos, continua

en el tiempo y monotonamente creciente en el perıodo t > tm, tal que:

f(t) =

fm , t ≤ tm

fm + a · t , t > tm

(4.2)

donde a es la aceleracion y fm es la velocidad inicial de los pulsos.

Si la aceleracion a es constante, la velocidad crece monotonamente en el tramo

t > Tm, obteniendose, el perfil de velocidad como el que muestra la Fig. 4.3. En

la Fig. 4.3 tambien pueden verse los pulsos, cuya temporizacion esta definida de

la siguiente forma:

tm, t1, t2, t3, t4, t5, . . . (4.3)

1La velocidad del motor sera proporcional a los pulsos de velocidad v(t) ∝ f(t) pero, engeneral, no igual debido a las constantes geometricas y constructivas propias del motor (numerode polos, numero de stacks, etc). Para independizarse de las mismas y tener un enfoque general,la magnitud f(t) es preferida.

Page 84: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 67

D nt

t

t

fm

f1

f2

f3

f4

f5

fn

Tm-1 Tmt1 t2 t3 t4 t5

A

a

b

c

d

B C D E

Tn

i(t)

f(t)

Figura 4.3: Rampa de velocidad con aceleracion constante y los pulsos velocidadasociados.

Definido el esquema de temporizacion, puede establecerse el espacio de tiempo

que transcurre entre pulsos para cualquier tramo de la funcion, como:

∆ti = ti − ti−1

Notar como, a medida que se incrementa la velocidad, el espaciamiento ∆t

disminuye, es decir ∆tm < ∆t1, pues a la funcion f(t) se la definio como monoto-

namente creciente. Es importante notar que la velocidad es definida en el mismo

punto donde el incremento de movimiento es producido2, por ejemplo para el

primer trapecio, A, la velocidad en el punto f1 queda dada por:

f1 =1

∆t1=

1

t1 − tm=

1

t1(4.4)

2Otros autores toman la velocidad, como representativa, es decir la velocidad en un puntomedio entre los dos instantes de tiempo. Esto produce ecuaciones analogas pero diferentes, alas producidas en este texto.

Page 85: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 68

Analogamente a lo definido en la ecuacion 4.1, puede establecerse el inverso

de f(t). La misma es inversible, ya que f(t), como fue definida en (4.2), es una

funcion continua a tramos. Luego:

∆t =1

f(t)=

1

fm + a · t (4.5)

Por otra parte el area del primer trapecio, A, debe ser exactamente de 1 paso,

por lo que:

area A =

∫ t1

tm

(fm + at) dt

= (t1 − tm) · fm +a

2(t21 − t2m) = 1 paso (4.6)

En funcion a lo expresado en (4.6) es posible establecer una restriccion para

la velocidad al culminar el primer pulso, donde:

f1 =1

∆t1=

1

t1

donde se ha realizado la simplificacion practica ∆t1 = t1 − tm ≡ t1.

Luego la velocidad inicial, para una aceleracion dada, queda establecida como:

fm =1 − a

2t21

t1= f1 −

1

2

a

f1

(4.7)

Debe encontrarse una ecuacion que determine la temporizacion de los pulsos

dada una velocidad inicial y una determinada aceleracion. Para ello, la ecuacion

Page 86: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 69

4.6, puede ser reescrita en funcion al espaciamiento entre tiempos de manera que:

1 paso =a

2∆t21 + ∆t1 · fm (4.8)

a

2∆t21 + ∆t1 · fm − 1 = 0 (4.9)

∆t1 =

f 2m + 2a − fm

a(4.10)

La ecuacion anterior determina el tiempo que debe transcurrir para mantener

la relacion de velocidad en el tiempo t1. Puede usarse esta ecuacion iterativamen-

te obteniendose un nuevo ∆tk, usando el resultado en el paso inmediatamente

anterior. Sin embargo, el objetivo es encontrar una ecuacion algebraica.

Lo hecho para el primer trapecio, puede ser realizado con los consiguientes

trapecios ABCDE . . ., etc, luego todo el segmento puede ser considerado un solo

trapecio, donde el area cubierta es de (n − 1) pasos:

(n − 1) pasos = area abcd =a

2∆t2n + ∆tn · fm (4.11)

a

2· ∆t2n + fm · ∆tn = n − 1 (4.12)

Si nuevamente consideramos un eje de coordenadas tal que tm = 0, luego la

ecuacion se convierte en:

a

2· t2n + fm · tn − n + 1 = 0 (4.13)

Una solucion directa a la ecuacion cuadratica, es:

tn =

f 2m + 2a(n − 1) − fm

a(4.14)

Page 87: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 70

Es posible entonces, mediante la ecuacion establecer la temporizacion en el

n-esimo pulso:

∆tn = tn+1 − tn =

f 2m + 2an − fm

a−

f 2m + 2a(n − 1) − fm

a

=

f 2m + 2an

a−

f 2m + 2a(n − 1)

a(4.15)

La funcion pulsos de velocidad queda finalmente:

fn =1

∆tn=

a√

f 2m + 2an −

f 2m + 2a(n − 1)

(4.16)

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.80

2

4

6

8

10

12

14

16

18

20

22

Tiempo, [ms]

f n, [K

Hz]

Figura 4.4: Rampa de velocidad. Notar que los instantes calculados estan marca-dos con cruces, mientras que el trazo continuo es una interpolacion lineal de lasmismas.

Ejemplo 1. Se requiere un perfil de velocidad en rampa donde se desarrolle una

distancia de 24 pasos, a partir de una velocidad inicial fm = 4000 Hz con una

Page 88: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 71

Tabla 4.1: Rampa de velocidad, resultados para n = 24 pasosn tn [ms] ∆tn [ms] fn [Hz]

1 0,000 0,250 4000,002 0,250 0,165 6073,283 0,415 0,132 7558,104 0,547 0,114 8788,565 0,661 0,101 9864,366 0,762 0,092 10832,807 0,854 0,085 11720,948 0,940 0,080 12546,069 1,019 0,075 13319,9710 1,095 0,071 14051,1911 1,166 0,068 14746,1012 1,234 0,065 15409,6513 1,298 0,062 16045,7314 1,361 0,060 16657,5015 1,421 0,058 17247,5616 1,479 0,056 17818,0717 1,535 0,054 18370,8618 1,589 0,053 18907,4719 1,642 0,051 19429,2620 1,694 0,050 19937,3921 1,744 0,049 20432,8822 1,793 0,048 20916,6323 1,841 0,047 21389,4324 1,887 0,046 21852,01

aceleracion maxima de a = 107 pasos s−2. En la Fig. 4.4 se observa esta rampa de

velocidad, la cual llega a una velocidad maxima de 21852,01 Hz. En la Tabla 4.1

se puede apreciar la evolucion instantanea del perfil y el espaciamiento de los

pulsos.

La rampa de velocidad, acotada en tiempo y velocidad, forma parte de un

perfil de velocidad comunmente usado, conocido como perfil de velocidad trape-

zoidal. Una definicion mas adecuada de este tipo de perfil fue introducida en la

Seccion 3.1, reescrita aquı en la ecuacion (4.18), donde la velocidad maxima de los

pulsos de salida es fn, como puede verse en la Fig. 4.5. A la zona donde el perfil

Page 89: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 72

desarrolla la maxima velocidad, se la denomina plateau. En la Fig. 4.5 tambien

pueden verse los pulsos, cuya temporizacion esta definida de la siguiente forma:

tm, t1, t2, t3, t4, t5, . . . tn (4.17)

donde si t > tn el periodo entre los pulsos de salida es ∆tn.

f(t) =

fm , t < tm

fm + a · t , tm < t < tn

fn , t > tn

(4.18)

Si bien la ecuacion de temporizacion para una rampa lineal de velocidad es

establecida por (4.14) y (4.15), no es posible utilizar las mismas para el perfil

de velocidad trapezoidal. Esto es debido a que en las ecuaciones halladas no hay

una restriccion de velocidad que asegure que en el tn-pulso, la velocidad llegara a

una fn, como lo plantea el perfil dado por (4.18). Un ejemplo puede verse en

la Fig. 4.6, donde la velocidad final deseada es fn, pero el perfil en rampa solo

dispone, para este instante de tiempo, una velocidad anterior, fi y una posterior,

fi+1. Para altas, velocidades, este efecto se ve relativamente minimizado ya que

la distancia entre pulsos, ∆tn, tiende a hacerse mınima. Pero a bajas y medias

velocidades, el accionamiento puede entrar en una zona no deseada, donde una

determinada velocidad en funcion del par puede no producirse y ası provocar un

parada abrupta del accionamiento.

Es por esto ultimo que es preferible encontrar un conjunto de ecuaciones que

incluyan la velocidad final. Para ello, introducimos en la funcion velocidad, una

restriccion tal que, en t = tn:

fn = fm + a · tn (4.19)

Page 90: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 73

D nt

t

t

fm

f1

f2

f3

f4

f5

fn

Tm-1 Tmt1 t2 t3 t4 t5 t6 t7 t8

A

a

b

c

d

B C D E

Tn

i(t)

f(t)

Figura 4.5: Rampa de velocidad con aceleracion constante y los pulsos de veloci-dad asociados. La rampa de velocidad con velocidad final constante, es parte delperfil de velocidad trapezoidal.

Re-escribiendo (4.14) en funcion de esta restriccion, donde ademas n = N , se

obtiene:

f 2n − f 2

m = 2a(n − 1) (4.20)

donde tambien, la velocidad inicial es:

f 2m = f 2

n − 2a(n − 1) (4.21)

Page 91: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 74

t

t

fn

fi-2

fi-1

fi

fi+1

Ti-1 Ti+1Ti-2 Ti Tn

i(t)

f(t)

Figura 4.6: fi y fi+1 son solo las dos frecuencias de generacion posible

Notar que esto plantea una restriccion tambien para la aceleracion, tal que:

a =f 2

n − f 2m

2(n − 1)(4.22)

De esta manera, la aceleracion tiene la forma de un polinomio de segundo

orden, como se aprecia en la ecuacion:

0 = 4f 21

[

f 21 − f 2

n

]

+ a2 + 4f 21 a (2n − 3) (4.23)

La solucion de esta ecuacion cuadratica, permite encontrar la aceleracion para

la rampa de velocidad en funcion a la velocidad final y a la velocidad inicial, como

puede verse en (4.24):

a = 2

(

(3 − 2n) f 21 +

8f 41 + f 2

1 f 2n − 12nf 2

1 + 4f 41 n2

)

= (4.24)

=2 (f 2

n − f 21 )

(2N − 3)2 + f2n

f21− 1 + 2n − 3

(4.25)

Page 92: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 75

Si se desea encontrar ecuaciones que no tomen en cuenta la velocidad inicial,

sino el numero de pasos hasta alcanzar el plateau de velocidad, puede reescribirse

la (4.14) en funcion de (4.21). Operando de esta manera, se obtiene la tempori-

zacion de los pulsos:

tn =2(n − 1)

fn2 − 2a (N − 1) +

fn2 + 2a (n − N)

(4.26)

Idem para los intervalos de tiempo entre pulsos:

∆tn = tn+1 − tn =

f 2N + 2a (1 + n − N) −

f 2N + 2a (n − N)

a=

=2

f 2N + 2a (1 + n − N) +

f 2N + 2a (n − N)

(4.27)

Idem tambien con la funcion frecuencia ındice de los pulsos:

fn =1

∆tn=

1

2

[

f 2N + 2a (1 + n − N) +

f 2N + 2a (n − N)

]

(4.28)

Ecuaciones (4.26), (4.26) y (4.26) sintetizan lo expuesto hasta aquı para un

perfil rampa con limitacion de velocidad final teniendo en cuenta solo el numero

de pasos. Hasta aquı, esta definido la rampa de velocidad con aceleracion, es

necesario a continuacion definir la rampa de velocidad para una desaceleracion

constante.

Ejemplo 2. Con este conjunto de ecuaciones es posible realizar un ejemplo, don-

de fm = 4000 Hz, fn = 32000 Hz y la aceleracion maxima es a = 2,6937 pasos s−2.

En la Fig. 4.7 se observa esta rampa de velocidad y en la Tabla 5.1 se puede apre-

ciar la evolucion instantanea del perfil y el espaciamiento de los pulsos obtenidos.

El perfil de velocidad llega a una velocidad maxima de 31573,43 Hz en 19 pasos,

ya que para el paso 20, la velocidad es de 32415,49 Hz, la cual supera el valor

Page 93: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 76

prefijado. Para el pasos mayores al 19, la velocidad debe ser 20 KHz por lo que el

espaciamiento entre pulsos debe fijarse en 31,25 µs.

0 0.2 0.4 0.6 0.8 1 1.2 1.40

4

8

12

16

20

24

28

32

Tiempo, [ms]

f n, [K

Hz]

Figura 4.7: Simulacion.

4.2.2. Desaceleracion lineal

Es posible utilizar el mismo conjunto de ecuaciones para producir un esquema

de desaceleracion identico al de aceleracion, simplemente invirtiendo el orden

del envıo de pulsos. No obstante, de esta manera no es posible producir el caso

tıpico, en donde la desaceleracion es mas rapida que la aceleracion. Es por este

motivo que es deseable encontrar una forma de computar el perfil cuando el mismo

desacelera.

Page 94: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 77

Tabla 4.2: Rampa de velocidad, resultados para n = 20 pasosn tn [ms] ∆tn [ms] fn [Hz]

1 0,250 0,250 4000,002 0,225 0,113 8883,263 0,259 0,086 11564,094 0,292 0,073 13711,075 0,321 0,064 15559,016 0,349 0,058 17207,357 0,374 0,053 18709,928 0,398 0,050 20099,859 0,421 0,047 21399,3110 0,442 0,044 22624,0111 0,462 0,042 23785,5712 0,482 0,040 24892,8713 0,501 0,039 25952,8814 0,519 0,037 26971,2015 0,537 0,036 27952,4016 0,554 0,035 28900,2617 0,570 0,034 29817,9818 0,586 0,033 30708,2619 0,602 0,032 31573,4320 0,617 0,031 32415,49

Sean los pulsos de velocidad, f(t), una funcion definida por tramos, continua

en el tiempo y monotonamente decreciente en el perıodo tm < t < tn, tal que:

f(t) =

fm , t < tm

fm − d · t , tm < t < tn

fn , t > tn

(4.29)

donde d es la aceleracion, constante en este caso y fm es la velocidad inicial de

los pulsos. Notar que se continuo la notacion empleada hasta ahora, donde la

velocidad final es siempre fn < fm. No debe confundirse la fm de la rampa de

aceleracion con el de la rampa de desaceleracion.

Observando la Fig. 4.8, aplicamos la misma restriccion hecha para la rampa de

aceleracion, donde N es el numero de pulsos necesarios para alcanzar la velocidad

Page 95: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 78

D 2t

D nt

t

t

Tm-1Tm

fm

Aa

b

c

d

B C D E

f1

f2

f3

f4

f5

f6

fn

t1 t2 t3 t4 t5 t6 t7 Tn

i(t)

f(t)

Figura 4.8: Rampa de velocidad con desaceleracion lineal.

final.

Una solucion directa a la ecuacion cuadratica, es:

tn =fm −

f 2m − 2d(n − 1)

d(4.30)

Notar que esta ultima ecuacion es similar a la (4.14) pero la solucion de esta

cuadratica corresponde a los negativos de la raız cuadrada.

Operando analogamente a lo hecho para la rampa con aceleracion, se llega a

que la desaceleracion, en funcion de la velocidad inicial y final, tiene siguiente

Page 96: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 79

forma:

d =2 (f 2

m − f 2n)

(2N − 1)2 +(

fm

fn

)2

− 1 + 2N − 1

(4.31)

Idem para los intervalos de tiempo entre pulsos:

∆tn = tn+1 − tn =

f 2m − 2dn −

f 2m − 2d (n − 1)

d=

=2

f 2m − 2nd +

f 2m − 2d (n − 1)

(4.32)

Idem tambien con la funcion frecuencia ındice de los pulsos:

fn =1

∆tn=

1

2

[

f 2m − 2nd +

f 2m − 2d (n − 1)

]

(4.33)

Ejemplo 3. Se requiere un perfil donde fm = 20000 Hz, fn = 4000 Hz requi-

riendose 18 pasos para desarrollar el perfil.

La desaceleracion maxima es entonces d = 9107941,715 pasos s−2, esta desace-

leracion en particular, logra alcanzar la velocidad final propuesta en exactamente

1,6 ms. En la Fig. 4.9 se observa la evolucion de este perfil, dado por (4.31),

(4.30), (4.32) y (4.33). En la Tabla 5.2 se puede apreciar como en el paso 21, se

llega a la velocidad esperada de fn = 4000 Hz.

4.2.3. Aceleracion no constante

Lo expuesto hasta aquı ha sido realizado para aceleraciones constantes, po-

sitiva para el caso de una aceleracion y negativa para una desaceleracion. Un

caso mas general aun, es desarrollar ecuaciones que involucren aceleraciones con

dinamica, es decir, a(t). La principal motivacion es poder comandar perfiles de

velocidad como los expresados en el Capıtulo 3, los cuales tienen aceleracion no

Page 97: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 80

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.82

4

6

8

10

12

14

16

18

20

Tiempo, [ms]

f n, [K

Hz]

Figura 4.9: Simulacion de desaceleracion maxima.

constante. De esta forma poder utilizar las caracterısticas especiales de los mis-

mos, en cuanto a minimizacion de jerking, tiempo o distancia. De las conclusiones

obtenidas en el Capıtulo 3, se sigue que los perfiles relevantes para cumplir con

estas caracterısticas son el el perfil trapezoidal, el perfil parabolico, y el perfil con

curvas-S.

Temporizacion del perfil parabolico

En la Seccion 3.1.3 del Capıtulo 3.1, se encuentra la expresion de la velocidad

para un perfil parabolico, la que puede expresarse como:

f(t) = 4fn

t

T 2(T − t) + fm (4.34)

Page 98: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 81

Tabla 4.3: Rampa de velocidad, resultados para n = 21 pasosn tn [ms] ∆tn [ms] fn [Hz]

1 0,000 0,051 19533,552 0,051 0,052 19061,503 0,104 0,054 18577,464 0,157 0,055 18080,455 0,213 0,057 17569,386 0,270 0,059 17042,987 0,328 0,061 16499,778 0,389 0,063 15938,049 0,452 0,065 15355,7410 0,517 0,068 14750,4411 0,585 0,071 14119,1712 0,655 0,074 13458,2513 0,730 0,078 12763,0714 0,808 0,083 12027,6315 0,891 0,089 11244,0016 0,980 0,096 10401,1517 1,076 0,105 9483,0918 1,182 0,118 8464,8919 1,300 0,137 7303,3620 1,437 0,169 5909,1621 1,606 0,250 4000,00

donde fm es la velocidad inicial de los pulsos, fn la velocidad maxima, T es la

duracion completa del perfil.

Este perfil tiene la siguiente aceleracion:

a(t) = fn

4

T 2(T − 2t) (4.35)

cuya aceleracion maxima (en t = 0 y en t = T ) es:

|A| = 4fn

T

De manera de poder determinar la temporizacion de los pulsos, se sigue la

misma estructura utilizada anteriormente para el perfil trapezoidal. Por tanto el

Page 99: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 82

area cubierta por el perfil parabolico, en un tiempo tn=N = T , debe ser n − 1, es

decir:

A

3Tt3n − A

2t2n − fmtn + n − 1 = 0 (4.36)

La solucion de esta ecuacion cubica, tambien conocida como la solucion de

Cardano (Cardano, 1545)(Cardano, 1968), especifica tres raıces, cuyo dominio,

real o imaginario, depende de los coeficientes presentados en (4.36). Para un

comprension geometrica de la solucion de Cardano ver Nickalls (1993). Utilizando

la solucion y operando algebraicamente, se llega a la temporizacion de los pulsos

que se muestra en (4.37):

tn =1

2Re

T − 3

ρ1 +√

ρ2 −14T 2 + 1

ATfm

3√

ρ1 +√

ρ2

+ i√

3

(

3

ρ1 +√

ρ2 −14T 2 + 1

ATfm

3√

ρ1 +√

ρ2

)

(4.37)

donde:

ρ1 =1

8T 3 +

3

2AT − 3

2ATn +

3

4AT 2fm

ρ2 =9

4A2T 2 +

3

8AT 4 − 9

2A2T 2n − 3

8AT 4n +

9

4A2T 3fm−

− 9

4A2T 3nfm +

9

4A2T 2n2 − 3

16A2T 4f 2

m − 1

A3T 3f 3

m

En (4.37), los polinomios ρ1 y ρ2 son efectivamente, funciones de n. Particu-

larmente, si A 6= 0 ∧ T 6= 0, la raız√

ρ2 tiene solo solucion compleja. Es por

este motivo que debe expresarse la temporizacion en forma compleja, pero des-

tacandose que la solucion pertenece al dominio real.

Para encontrar el tiempo entre pulsos, ∆tn, se opera tal que:

Page 100: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 83

∆tn = tn+1 − tn =

=1

2Re

T − 3

ρ1 +√

ρ2 −14T 2 + 1

ATfm

3√

ρ1 +√

ρ2

+ i√

3

(

3

ρ1 +√

ρ2 −14T 2 + 1

ATfm

3√

ρ1 +√

ρ2

)

− 1

2Re

T − 3

ρ1 +√

ρ2 −14T 2 + 1

ATfm

3√

ρ1 +√

ρ2

+ i√

3

(

3

ρ1 +√

p2 −14T 2 + 1

ATfm

3√

ρ1 +√

ρ2

)

(4.38)

Ejemplo 4. Se desea desarrollar un perfil parabolico tal que T = 0,05 s, fm =

400pasoss

y A = 2800pasoss2

, se encuentra que la distancia que debe recorrer, es de

113 pasos. En la Fig. 4.10 se observa la evolucion de este perfil, dado por (4.37)

y (4.38).

Temporizacion del perfil de curvas-S

Los perfiles con curvas-S fueron definidos en la Seccion 3.1.3 del Capıtulo 3.1,

el conjunto de ecuaciones que definen la velocidad, puede observarse en (4.39).

v(t) =

Vi + 4Vmax

(

3T 2 t

2 − 4T 3 t

3)

Vi + 4Vmax

T 3 (T − t)2(4t − T )

, 0 < t < T2

, T2

< t < T(4.39)

La aceleracion del perfil:

a(t) =

24Vmaxt

T 3 (T − 2 t)

24VmaxT 2−3 T t+2 t2

T 3

, 0 < t < T2

, T2

< t < T(4.40)

cuya aceleracion maxima (en t = T4

y en t = 34T ) es:

|amax| = 24Vmax

Page 101: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 84

0 5 10 15 20 25 30 35 40 45 500.5

1

1.5

2

2.5

3

3.5

Tiempo, [ms]

f n, [K

Hz]

Figura 4.10: Simulacion

No es posible encontrar ecuacion algebraica que comprenda todo el recorrido

del perfil (de t = 0 hasta t = T ), ya que la velocidad esta definida por tramos,

acorde al signo de la aceleracion. Por ello, la temporizacion del perfil debe plan-

tearse en dos partes, una donde la aceleracion es positiva y otra donde es negativa.

Con esta restriccion, el area por recorrer en funcion del tiempo, esta dada por:

n − 1 =

fm t − 4fn t4

T 3 + 4fn t3

T 2

4 fn (t−T )3+fm T 3

T 3 t

, t = T2

, t = T(4.41)

Notar que cada tramo de la ecuacion 4.41 es esencialmente una ecuacion de

cuarto orden, conocida en la bibliografıa como cuartica. La solucion de ecuaciones

cuarticas fue originalmente propuesta por Lodovico Ferraria (1522-1565), ver los

Page 102: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 85

trabajos de Nickalls (1993) y Christianson (1991). La solucion, en el tramo de

aceleracion es:

tn =T

4+

1

2

T 2

4+

3√

2 (−4fn T 3 + 4fn n T 3 − fm fn T 4)

fn3√

ρ1 +√

ρ2

− 1

12 3√

2fn

3

ρ1 +√

ρ2+

+1

2

T 2

2−

3√

2 (−4fn T 3 + 4fn n T 3 − fm fn T 4)

fn3√

ρ1 +√

ρ2

− 1

12 3√

2fn

3

ρ1 +√

ρ2+

+

(

T 3 +2fm T 3

fn

)

1

4

T2

4+ 3√2(−4fn T 3+4fn n T 3−fm fn T 4)

fn3√

ρ1+√

ρ2− 1

12 3√2fn

3√

ρ1 +√

ρ2

(4.42)

en donde:

ρ1 = −432 f 2nT 5 + 432 f 2

nn T 5 + 108f 2m fn T 6

ρ2 = −4(

−48fn T 3 + 48fn n T 3 − 12fm fn T 4)3

+

+(

108f 2m fn n T 6 + 432f 2

nT 2(

nT 3 − T 3))2

Para encontrar el tiempo entre pulsos, ∆tn, se opera tal que:

Page 103: Tesis_Gonzalez_Sergio.pdf

Cap

ıtulo

4.Tem

porizacion

de

lospulsos

de

accionam

iento

86

∆tn = tn+1 − tn =

=1

2

1

fn

(

1

2T 2fn − 1

243

4ρ1 + 4√

ρ2 − 4T 3nfn

3√

23√

ρ1 +√

ρ2

+ T 4fmfn

3√

23√

ρ1 +√

ρ2

)

+

+1

2

1

fn

(

1

4T 2fn − 1

243

4ρ1 + 4√

ρ2 + 4T 3nfn

3√

23√

ρ1 +√

ρ2

− T 4fmfn

3√

23√

ρ1 +√

ρ2

)

− 1

2

1

fn

(

1

2T 2fn − 1

243

4ρ1 + 4√

ρ2 + 4T 3fn

3√

23√

ρ1 +√

ρ2

− 4T 3nfn

3√

23√

ρ1 +√

ρ2

+ T 4fmfn

3√

23√

ρ1 +√

ρ2

)

− 1

2

1

fn

(

1

4T 2fn − 1

243

4ρ1 + 4√

ρ2 − 4T 3fn

3√

23√

ρ1 +√

ρ2

+ 4T 3nfn

3√

23√

ρ1 +√

ρ2

− T 4fmfn

3√

23√

ρ1 +√

ρ2

)

+

+1

fn

2T 3fm + T 3fn

9216T 4fmfn3√

2 − 36 864T 3nfn3√

2 − 2304T 2 + 3√

2(

2ρ13√

ρ1 +√

ρ2 + 2√

ρ23√

ρ1 +√

ρ2

)

(

−24fnρ13√

4 − 24fn

√ρ2

3√

4 − 2304fn3

ρ1 +√

ρ2

T 2

(

4Tnfn3√

2 − T 2fmfn3√

2 +1

4

)

)

+

+1

fn

2T 3fm + T 3fn

36 864T 3fn3√

2 − 2304T 2 − 36 864T 3nfn3√

2 + 9216T 4fmfn3√

2 + 3√

2(

2ρ13√

ρ1 +√

ρ2 + 2√

ρ23√

ρ1 +√

ρ2

)

(

24fnρ13√

4 + 24fn

√ρ2

3√

4 + 2304fn3

ρ1 +√

ρ2

T 2

(

4Tnfn3√

2 − 4Tfn3√

2 − T 2fmfn3√

2 +1

4

)

)

(4.43)

Page 104: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 87

En el tramo de desaceleracion, una traslacion a t− T2, simplifica el proceso de

encontrar una solucion algebraica, por lo que:

n − 1 = fm t + fn t +4fn t4

T 3− 4fn t3

T 2

luego, la temporizacion de los pulsos, esta dada por:

Page 105: Tesis_Gonzalez_Sergio.pdf

Cap

ıtulo

4.Tem

porizacion

de

lospulsos

de

accionam

iento

88

tn =T

4+

1

2

T 2

4− 3

√2 (−4fn n T 3 + fm fn T 4 + f 2

n T 4)

fn3

ρ1 +√

ρ2 + ρ21

− 1

12 3√

2fn

3

ρ1 +√

ρ2 + ρ21+

+1

2

T 2

2− 3

√2 (−4fn n T 3 + fm fn T 4 + f 2

n T 4)

fn3

ρ1 +√

ρ2 + ρ21

+1

12 3√

2fn

3

ρ1 +√

ρ2 + ρ21+

+ T 3

(

1 − 2(fm + fn)

fn

)

1√

4

T2

4−( 3√2(−4fn n T 3+fm fn T 4+f2

n T 4))

fn3√

ρ1+√

ρ2+ρ21

− 1

12 3√2fn

3

ρ1 +√

ρ2 + ρ21

(4.44)

Page 106: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 89

en donde:

ρ1 = 432 f 2nn T 5 − 108fn

(

−fm T 3 − fn T 3)2

ρ2 = −4(

−48fn n T 3 + 12fm fn T 4)3

Para encontrar el tiempo entre pulsos, ∆tn, se resuelven primero, las funciones

auxiliares ρ1 y ρ1 para luego obtener numericamente la (4.45).

Page 107: Tesis_Gonzalez_Sergio.pdf

Cap

ıtulo

4.Tem

porizacion

de

lospulsos

de

accionam

iento

90

∆tn = tn+1 − tn =1

fn

2T 3fm + T 3fn√

1fn

(

43√

ρ1+√

ρ2+ρ21

T 2(

4Tnfn3√

2 − T 2fmfn3√

2 − T 2f 2n

3√

2 + 14

)

− 124

3

4ρ1 + 4√

ρ2 + ρ21

)

+

1

fn

−2T 3fm − T 3fn√

1fn

(

43√

ρ1+√

ρ2+ρ21

T 2(

4Tfn3√

2 + 4Tnfn3√

2 − T 2fmfn3√

2 − T 2f 2n

3√

2 + 14

)

− 124

3

4ρ1 + 4√

ρ2 + ρ21

)

1

2

1

fn

1

2

T 2

3

ρ1 +√

ρ2 + ρ21

+1

24

3

4ρ1 + 4√

ρ2 + ρ21 + (4T 3nfn − T 4fmfn − T 4f 2

n)3√

2

3

ρ1 +√

ρ2 + ρ21

1

2

1

fn

1

4

T 2

3

ρ1 +√

ρ2 + ρ21

− 1

24

3

4ρ1 + 4√

ρ2 + ρ21 + (4T 3nfn − T 4fmfn − T 4f 2

n)3√

2

3

ρ1 +√

ρ2 + ρ21

+

1

2

1

fn

1

2

T 2

3

ρ1 +√

ρ2 + ρ21

+1

24

3

4ρ1 + 4√

ρ2 + ρ21 + (4T 3fn + 4T 3nfn − T 4fmfn − T 4f 2

n)3√

2

3

ρ1 +√

ρ2 + ρ21

+

1

2

1

fn

1

4

T 2

3

ρ1 +√

ρ2 + ρ21

− 1

24

3

4ρ1 + 4√

ρ2 + ρ21 + (4T 3fn + 4T 3nfn − T 4fmfn − T 4f 2

n)3√

2

3

ρ1 +√

ρ2 + ρ21

(4.45)

Page 108: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 91

Ejemplo 5. Si se desea desarrollar un perfil con curvas-S tal que T = 0,05 s,

fm = 400 pasos s−1, fm = 2800pasoss

y A = 1600pasoss2

, se encuentra que la distancia

que debe recorrer, es de 90 pasos en total, 45 pasos para la aceleracion y lo mismo

para la desaceleracion. En la Fig. 4.11 se observa esta simulacion.

0 5 10 15 20 250

0.5

1

1.5

2

2.5

3

3.5

Tiempo, [ms]

f n, [K

Hz]

Figura 4.11: Simulacion de un perfil con curvas-S

4.3. Conclusiones

En este capıtulo se ha encontrado un marco de trabajo para la temporizacion

de la generacion de perfiles de velocidad para maquinas de posicionamiento in-

cremental. El mismo es suficientemente general como para abarcar los distintos

tipos de perfiles, definidos previamente.

Page 109: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 92

El perfil sinusoidal no es incluido, ya que la definicion de este perfil de veloci-

dad, contiene una funcion trascendental, de manera que el metodo utilizado hasta

ahora no puede ser empleado. La unica solucion es la numerica. No obstante, este

perfil no tiene ninguna ventaja sobre el perfil con curva-S, por lo que se pierde el

interes en encontrar una ecuacion algebraica que defina la temporizacion.

Page 110: Tesis_Gonzalez_Sergio.pdf

Capıtulo 4. Temporizacion de los pulsos de accionamiento 93

Referencias

Cardano, G. (1545). Artis Magnae sive de Regulis Algebraicis. Petrieus, Nurem-burg. (in Latin).

Cardano, G. (1968). Ars Magna or The Rules of Algebra. MIT Press, Cambridge,MA. (in Latin).

Christianson, B. (1991). Solving quartics using palindromes. Mathematical Ga-zette, 75:327–328.

Kenjo, T. and Sugawara, A. (1995). Stepping Motors and their MicroprocessorControls. Monographs in Electrical and Electronic Engineering. Oxford Uni-versity Press, Oxford, U.K., 2nd reprint edition.

Nickalls, R. W. D. (1993). A new approach to solving the cubic: Cardan’s solutionrevealed. The Mathematical Gazette, 77:354–359.

Oriental Motor U.S.A. Corp. (2005). VEXTA Step Motor Drives, 2005-2006General Catalog. Torrance, CA.

Pacific Scientific (2005). Pacific Scientific’s P7000 Series Step Motor Drives.Danaher Motion, Radford, VA.

Page 111: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5

Tecnica de Temporizacion

Propuesta

5.1. Analisis de la temporizacion con

algoritmos convencionales

En el capıtulo anterior se desarrollo un marco generalizado para encontrar

ecuaciones algebraicas que permitan determinar la temporizacion de los perfi-

les de velocidad. Las ecuaciones de la temporizacion de un perfil trapezoidal se

reescriben aquı en (5.1) y (5.2):

tn =2(n − 1)

fn2 − 2a (N − 1) +

fn2 + 2a (n − N)

(5.1)

∆tn = tn+1 − tn =

f 2N + 2a (1 + n − N) −

f 2N + 2a (n − N)

a=

=2

f 2N + 2a (1 + n − N) +

f 2N + 2a (n − N)

(5.2)

94

Page 112: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 95

Tabla 5.1: Resultados comparativosM A raız inversa

Cantidad de operaciones: 3 6 2 1Tiempo de ejecucion en ciclospara precision simple:

35 12 50 35

Tiempo de ejecucion en ciclospara precision extendida:

51 25 163 115

De modo de cuantificar la complejidad de la tecnica, se computa el numero de

operaciones que requiere un DSP1 para calcular la (5.1). El numero de operaciones

en coma flotante (forma de la mantisa y del exponente), tanto para precision

simple (8-bits reservados para el exponente y 24-bits para la mantisa) como para

precision extendida (8-bits para el exponente y 32-bits para la mantisa)(Texas

Instruments, 1997) puede ser resumido en la Tabla 5.1.

Para cada paso dado por el motor, se computan todas las operaciones descri-

tas por la Tabla 5.1. Los ciclos que al procesador le toma realizar cada operacion

es fuertemente dependiente del mismo; mientras que hay procesadores que po-

seen modulos de multiplicacion separados del bloque aritmetico (ALU), existen

otros que poseen un modulo2 para multiplicar y adicionar en una solo ciclo de

reloj, existen DSPs con multiples MACs. Sin embargo, para realizar funciones

matematicas trascendentales o racionales, se utiliza interpolacion en memoria.

Este es el caso para el procesamiento de la raız cuadrada y de la funcion inversa

(Lovrich, 1997). El tiempo de instruccion del procesador de coma flotante de 32-

bit usado, el TMS320C30-50 de Texas Instruments, es de 40 ns, como se aprecia

en la Tabla 5.2 que resume las caracterısticas de este DSP, Texas Instruments

(1997).

1El Procesador Digital de Senales (DSP) elegido es el TMS320C31 de Texas Instruments. Enel Apendice B se explican los detalles de su eleccion, ası como un resumen de su arquitecturainterna.

2Una unidad MAC (Multiplier Accumulator Component) provee multiplicacion, multiplica-cion con adicion acumulativa y multiplicacion con substraccion acumulativa.

Page 113: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 96

Tabla 5.2: Performance del DSP de coma flotante TMS320C30-50 (5V)40 ns tiempo del ciclo de instruccion275 MOPS, 50 MFLOPS, 25 MIPSoperaciones enteras de 16-/ 32-Bit y coma flotantede 32-/ 40-Bit32-Bit de longitud de la palabra de instruccion condireccionamiento de memoria de 24-BitDos timers de 32-Bit

Al numero de operaciones obtenidas en la Tabla 5.1 deben sumarse otros

tiempos. Uno de ellos es el tiempo que toma la conversion del tiempo obtenido

en (5.2) en ciclos de procesador. Un timer es cargado con este numero de ciclos.

Cuando el modulo del contador del timer completa un ciclo, se comanda un paso

del motor, obteniendose ası los pulsos de salida.

Para un instante i dado, se define al tiempo que tarda el procesador en calcular

(5.2) mas el tiempo de conversion, como tiempo de procesamiento, Tc. Este tiempo

impone un lımite practico a la velocidad maxima a la que pueden enviarse los

pulsos de salida. Por otra parte, no solamente el Tc limita la maxima velocidad,

sino que tambien esta involucrada la resolucion del contador de tiempo del DSP,

Tr, como se expresa en 5.3:

Vmax =1

Tr + Tc

(5.3)

Las resoluciones de los contadores de tiempo de los procesadores actuales son

bastante pequenas, por los que se puede descartar el termino Tr en (5.3). Por lo

tanto, (5.3) se puede aproximar a (5.4):

Vmax=1

Tc

(5.4)

Ejemplo 6. Se busca determinar el tiempo de procesamiento involucrado en el

Page 114: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 97

accionamiento con paso completo por pulso, mediante un perfil trapezoidal ejecu-

tado a traves de un DSP. Las caracterısticas del perfil trapezoidal deseado son:

Vmın = 500 pasos s−1, Vmax = 10000 pasos s−1 y aceleracion a = 10000 pasos s−2.

El tiempo necesario para la ejecucion de (5.2) resulto en un Tc = 12,48 µs, si

se utiliza precision simple y Tc = 30 µs si se utiliza precision extendida. Este

Tc mınimo es el mınimo tiempo que al procesador le tomo computar la proxima

temporizacion, transformar el resultado a ciclos de reloj y cargar el timer.

Incluso la temporizacion del mas simple de los perfiles de velocidad, el perfil

trapezoidal, tiene una importante complejidad algebraica como se pudo apreciar

por las ecuaciones (5.1) y (5.2). Se concluye que los algoritmos convencionales no

pueden alcanzar altas velocidades debido, principalmente, al tiempo de calculo,

el Tc.

Para superar la limitacion de la Vmax alcanzable, la meta es proveer de un nue-

vo algoritmo, un procedimiento mas eficaz de la generacion del paso, sin utilizar

contadores de tiempo.

5.2. Nueva tecnica de temporizacion

Por lo encontrado en el ejemplo anterior es claro que el desarrollo de la tem-

porizacion mediante calculo algebraico posee dos desventajas importantes:

esta solucion demanda una extensa cantidad de timers en el caso del accio-

namiento de multiples motores,

la complejidad de las ecuaciones limita la maxima velocidad, esto se hace

mas evidente cuanto el numero de motores a controlar es elevado y/o el

accionamiento es del tipo micro-paso.

Page 115: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 98

Se hace necesario encontrar una forma mas eficiente de temporizacion. La

metodologıa estandar es directa, en el sentido que se encuentra el valor exacto

de la temporizacion es calculado a priori algebraicamente. Seria concebible un

metodo indirecto donde el valor de la temporizacion no se arribe mediante una

operacion algebraica, sino mediante la evaluacion iterativa de un funcion lineal3.

Dada esta funcion lineal, o primitiva, seria posible arribar al valor exacto de la

temporizacion, a traves del metodo de aproximaciones sucesivas.

Una definicion mas precisa dirıa que un metodo iterativo produce una solucion

aproximada luego de un numero finito de pasos. Sin embargo, que esta solucion

sea una aproximacion, no es un problema. La misma sera tan buena como el

numero de pasos que se desee, o pueda, iterar.

Dentro de los metodos iterativos, el metodo de Newton-Raphson es quizas el

mas conocido. Originado por Isaac Newton en De analysi per aequationes numero

terminorum infinitas (escrito en 1669, y publicado en 1711 por William Jones)

es ampliamente usado para encontrar las raıces de una funcion. El metodo, desa-

rrollado originalmente para ecuaciones polinomicas, fue modificado en 1690, por

Joseph Raphson quien publico una descripcion simplificada. Raphson fue el pri-

mero en describir el metodo en terminos de aproximaciones sucesivas, (Gerald

and Wheatley, 2004). Otros metodos mas elaborados son usados en la resolucion

de ecuaciones lineales simultaneas, ver (Barrett et al., 1993).

En lo que concierne la problematica de la resolucion de la temporizacion,

los metodos de aproximaciones sucesivas no eran usados. Es posible pensar en

aplicar el metodo de Newton-Raphson directamente sobre (5.2). Los pasos para

ello serıan: despejar el n igualando a cero la funcion, iterar la funcion trascendental

hasta que llegue a cero o a una proximidad definida por el error deseado.

3Esta distincion, es realizada en el trabajo de Saad (2003).

Page 116: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 99

Si bien esta tecnica tiene la ventaja de no utilizar timers, la ecuacion resultante

a iterar es todavıa muy compleja para un DSP de uso industrial actual.

Es posible usar una funcion auxiliar o primitiva, como arriba se introdujo, para

obtener la temporizacion. La idea es encontrar una funcion tal que al iterarla por

sucesivas aproximaciones de el resultado esperado. De esta forma el algoritmo es

mas eficiente desde el punto de vista computacional. El algoritmo propuesto se

puede explicar como sigue. Para estimar el tiempo ∆t(k), se asume que el ∆t(k)

es nk mide el tiempo Tc, puesto que es una manera exacta de medir tiempo sin

usar contadores de tiempo. Por lo tanto, el algoritmo propuesto tiene que hacer

las siguientes tareas durante cada iteracion:

1. Se inicializa con nk = 1.

2. Se asume que

∆t(k) = nk · Tc (5.5)

donde nk es un numero entero y positivo.

3. Se verifica is el ∆t(k) asumido, permite encontrar el V(k) deseado. Para ello

se computa

Vr(k) =1

∆t(k)

(5.6)

donde Vr(k) es la velocidad de referencia en el k-esimo paso.

4. Si la verificacion es verdadera, se ejecuta el paso/micro-paso. Si no, se in-

crementa nk y se repite el proceso. (puntos 2, 3 y 4)

nk = nk + 1 (5.7)

Page 117: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 100

t( )=n Tk k c

t( )k

D

D

si

no

Ejecucion delk-ésimo paso

Dá unpaso...

Figura 5.1: Diagrama de flujo del algoritmo. Se asume que el bloque de los perfilesde velocidad fue ejecutado previamente.

De (5.5) puede observarse que la resolucion del ∆t(k) es Tc. No es posible

cumplir la igualdad planteada en (5.6) debido a esta resolucion. La igualdad

planteada en (5.6) se transforma en una inequidad, expresada en la comparacion

de (5.8).

Vr(k) >1

∆t(k)

(5.8)

Es necesario eliminar el cociente planteado en (5.8) de manera de reducir el

tiempo que toma una completa iteracion. Para ello, una simple contraccion como

Page 118: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 101

se muestra en (5.9) es preferible.

Vr(k) · ∆t(k) > 1 (5.9)

El nuevo algoritmo se basa en las Ecuaciones (5.5), (5.7), y (5.9). Tc en la (5.5)

tiene el mismo significado que el expresado en la (5.4), pero con una magnitud

considerablemente menor, puesto que los computos son mas directos. Experi-

mentalmente, un Tc diez veces menor que en los algoritmos convencionales es

alcanzable, como se muestra en el Capıtulo 6.

Para concluir, el algoritmo consiste basicamente en una suma acumulativa

periodica hasta que se alcanza la velocidad prevista. La Fig. 5.1 muestra un

diagrama de flujo de un sistema que, mediante (5.5), (5.7) y (5.9), ejecuta cada

nuevo paso. El bloque de los perfiles de la velocidad fue ejecutado previamente.

De (5.5), se desprende que la resolucion del nuevo algoritmo es Tc puesto que

el nk es un numero entero. La resolucion finita en el ∆t(k) hace que el nuevo

algoritmo presente un problema de cuantizacion de la velocidad ya que la misma

es la inversa del ∆t(k), (5.6). Puesto que el termino ∆t(k) es un multiplo de Tc y

nk > 1, resulta de que la velocidad comandada tiene la siguiente caracterıstica:

Vk(n) =

1

∆tk=

1

nk · Tc

=

Vmax ; nk = 1

Vmax

2; nk = 2

......

Vmax

K; nk = K

(5.10)

Como ejemplo, la Fig. 5.2 muestra un perfil trapezoidal que comienza con Vmin

y llega hasta una Vmax. Para no perder de vista el perfil de velocidad deseado,

el mismo se muestra en lınea discontinua. El sistema ordena un valor inicial de

nk = 7. Esto da lugar a una velocidad inicial de Vmax/7 que es la velocidad posible

Page 119: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 102

v(t)

i(k)

Vmáx

t

k

t0 t1 t2 t3 t4 t5

Tc

Vmáx2

Vmáx4

Vmáx5 Vmáx

6Vmáx

7

nmáx = 2

nmáx = 1

nmáx = 3

nmáx=4nmáx=5

nmáx=6nmáx=7

Vmáx3

Figura 5.2: Perfil de velocidad deseado, perfil cuantizado y pulsos ındice.

mas cercana a la velocidad inicial prevista, de Vmin. En el t1, nk cambia a 6. Por

consiguiente una velocidad mas alta de Vmax/6 ocurre. En t2, el nk = 5 produce

una velocidad de Vmax/5. Se sigue que en el tiempo t6 la velocidad comandada es

Vmax la cual es la velocidad prevista por el perfil.

El efecto de cuantificacion es mas marcado a medida que la velocidad maxima

es mayor, justamente, cuando los ∆t(k) son aun menores que el Tc. El efecto puede

explicarse ya que las velocidades intermedias entre Vmax y Vmax/2 no pueden

comandarse. Ni tampoco las velocidad intermedias entre Vmax/2 y Vmax/3, ni

tampoco entre Vmax/3 y Vmax/4, etc.

Por lo tanto, se ha desarrollado un algoritmo que no requiere, ni contado-

res de tiempo, ni las tablas de look-up (LUTs). Puede, efectivamente, trabajar a

Page 120: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 103

velocidades mucho mas altas. Posee un efecto de cuantificacion de perfil de velo-

cidad que depende de la magnitud del Tc. Con la actual tecnologıa de DSPs, un

Tc = 6 µs es obtenible, como se arribara en el Capıtulo 6.

5.3. Impacto de los perfiles en la Implementa-

cion

Lo hecho hasta aquı es la temporizacion en si misma, es decir en funcion de

una velocidad impuesta externamente, los tiempos entre paso y paso son encon-

trados. En la Fig. 5.2, la nueva tecnica fue explicada con una rampa de velocidad

(aceleracion constante). No obstante, se deben introducir en el algoritmo los per-

files de velocidad, como por ejemplo, los descriptos previamente en el Capıtulo 3.

Sin embargo, esas ecuaciones deben transformarse para ser empleadas en el algo-

ritmo. Ası como tambien debe evaluarse el grado de complejidad que las mismas

introducen en el tiempo de procesamiento cuando son implementadas en DSP.

5.4. Implementacion en DSP

La implementacion de los perfiles de velocidad puede ser del tipo off-line u on-

line. Los esquemas off-line, donde el perfil es calculado por anticipado en LUTs,

se fundamentan en la lectura rapida por parte de un procesador de las tablas

que contienen las consignas de tiempo y/o posicion y/o velocidad. Dado que el

procesador no debe realizar calculos, los perfiles off-line se caracterizan por ser

rapidos, desde el punto de vista de la generacion inteligente del perfil, permitiendo

velocidades maximas elevadas. Por otro lado poseen una desventaja importante:

requieren un gran espacio de memoria que es proporcional a la extension y pre-

cision de los desplazamientos.

Page 121: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 104

Respecto a los perfiles on-line, se mencionan:

Aquellos en los que la referencia de velocidad es generada a partir de ecua-

ciones cuyo resultado es el tiempo entre pasos. Este tiempo es ingresado a

timers, los que a su vez, entregan los pulsos de excitacion al motor.

Perfiles basados en la ejecucion iterativa de ecuaciones de diferencias, en-

tregando en forma directa los pulsos de excitacion al motor.

Respecto a los primeros, el desarrollo de las ecuaciones para temporizar los

pasos en un perfil trapezoidal es complejo a pesar de ser un perfil simple (Kenjo

and Sugawara, 1995). La complejidad aumenta con el orden de las ecuaciones

por lo que para un perfil mas complicado deben generarse ecuaciones con gran

numero de terminos y con funciones no trascendentes como exponenciales, raıces

cuadradas, etc. Lo mencionado impone una limitacion en cuanto a la velocidad

maxima que pueden alcanzar los movimientos.

En cuanto a los segundos, poseen la ventaja de que al resolver el perfil de

referencia en forma iterativa, se consigue no utilizar hardware adicional, como son

los timers o sectores de memoria dedicados a LUTs. De esta forma, se elimina el

lımite de velocidad que imponen los mismos obteniendose mayores velocidades.

Por tanto, una forma general, para su implementacion es necesaria.

5.4.1. Formulacion general para los perfiles de velocidad

En un planteo general, la velocidad puede definirse por la ecuacion en dife-

rencias que se aprecia en (5.11).

v(k) = v(k−1) + a(k) · e (5.11)

Page 122: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 105

Donde v(k) es la velocidad actual, v(k−1) la velocidad en la anterior iteracion,

a(k) es la aceleracion actual y e es el tiempo entre iteraciones. En la (5.11) la

aceleracion es variable lo que permite describir cualquiera de los perfiles de ve-

locidad a traves de una conveniente expresion de a(k). Se puede expresar a(k) de

una manera general, valida para cualquier perfil de velocidad, que incluso, puede

adoptar una forma que permita describir la evolucion creciente del movimiento y

otra para la evolucion decreciente. En (5.12) y (5.13) se dispone el caso general.

a(k)crec= a(k−1) + C1 + C2 · k (5.12)

a(k)decrec= a(k−1) + C3 + C4 · k (5.13)

A continuacion se evaluara comparativamente el impacto de cada perfil so-

bre su implementacion en DSP. La idea de las comparaciones es determinar la

conveniencia de uno u otro estrictamente desde el punto de vista de la implemen-

tacion. Para ello se analizaran basicamente los perfiles triangular, parabolico y

de curvas-S. El exponencial no se tendra en cuenta debido a su baja performance

respecto del resto. Por otra parte, el senoidal tampoco se analizara ya que, si bien

presenta un muy buen desempeno frente al jerking, lo mismo se logra con el perfil

de curvas-S, que es sustancialmente mas sencillo de implementar.

5.4.2. Resultados comparativos

Se observa en la Tabla 5.3 un resumen de las constantes necesarias para cons-

truir estos perfiles de referencia, las cuales se desarrollaron a partir de (3.1) y

(3.4) para el perfil trapezoidal, de (3.9) y (3.11) para el parabolico y finalmente

(3.15) y (3.17) para las curvas-S.

Con las constantes mostradas en la Tabla 5.3 se construyeron los perfiles

de referencias y se evaluaron tanto las implementaciones como la performance

Page 123: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 106

Tabla 5.3: Resultados comparativosPerfil C1 C2 C3 C4

Trapezoidal 0 0 0 0Parabolico −2A·e

T0 0 −2A·e

T

Curvas-S 8A·eT

+ 16A·eT 2 e −32A·e

T 2 e 32A·eT 2 e −16A·e

T 2 e − 8A·eT

de los mismos. Los detalles de la implementacion y los resultados experimentales

obtenidos con las mismas se muestran en el Capıtulo 6. A continuacion se exponen

las conclusiones obtenidas.

5.4.3. Conclusiones

Si bien, el numero de MACs adicionales en el nucleo del algoritmo resulto en

solo 8 MACs para el parabolico y 10 MACs para el de curva-S debe considerarse

otro importante conjunto de instrucciones convencionales que debio agregarse.

Debido a esto, se obtuvieron los resultados mostrados en la Tabla 5.4 en cuanto

al tiempo de ciclo.

Tabla 5.4: Resultados comparativosPerfil e

Trapezoidal 6,3 µsParabolico 8,7 µsCurvas-S 9,2 µs

Las magnitud del Tc para el perfil trapezoidal que muestra la Tabla 5.4, pro-

duce un nivel de la cuantificacion de 2000 pasos alrededor de velocidades del orden

de 15000pasoss

que demuestra la importancia del problema. En aplicaciones de al-

ta precision, este problema es parcialmente resuelto, ya que es necesario utilizar

motores paso a paso con pasos pequenos. Los saltos de velocidad tiene menor

impacto en motores de paso pequeno en comparacion con los de mayor paso. El

tamano de los pasos es impuesto por la resolucion requerida. Lograr motores con

Page 124: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 107

pasos extremadamente pequenos complica la fabricacion y el diseno de los mismos

y hace extremadamente costoso la produccion de estos.

Una alternativa es utilizar la tecnica de micropasos (microstepping) introdu-

cida previamente en la Seccion 1.1.4 del Capıtulo 1, donde el tamano de paso del

motor se reduce aun mas por medio del control.

Mientras que los micropasos (microsteps) producen pequenos desplazamien-

tos, una gran cantidad de pulsos deben ser enviados para conseguir el despla-

zamiento total. De modo de ejecutar el movimiento en un tiempo razonable, el

tiempo entre los microsteps debe ser reducido, por tanto la existe una alta velo-

cidad transmision de pulsos de velocidad entre el indexador y el driver.

5.5. Implementacion en FPGA

Para reducir aun mas el tiempo de procesamiento, se propone una implemen-

tacion hardware del algoritmo propuesto. El algoritmo previamente presentado

en la Seccion 5.2 es bastante simple para ser ejecutado por un hardware disenado

con elementos logicos. Este es el caso de los arreglos logicos programables (ALPs

o de sus siglas en ingles FPGAs) que contiene elementos logicos (tanto de logi-

ca combinacional como de secuencial) y cuyas redes de interconexion permiten

modificarse segun el diseno requerido. Esta capacidad de reprogramacion del di-

seno, constituye de por si, un hardware de diseno flexible, (Xilinx, 1999a), (Hayes,

1996), (Van den Bout, 1999).

El desarrollo del algoritmo en hardware permite realizar multiples tareas en

forma paralela, lo que permite que el tiempo de calculo sea menor. La paraleli-

zacion permite que las operaciones tales como la generacion, la multiplicacion y

la indexacion del perfil de referencia puedan ejecutarse en bloques separados y

puedan funcionar independientemente unos de otros.

Page 125: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 108

5.5.1. Implementacion hardware del algoritmo

Los arreglos logicos programables tienen gran cantidad de logica disponible

para su interconexion. Aunque es posible el manejo de magnitudes decimales

o incluso de punto flotante, es mas eficiente el uso magnitudes enteras. Esta

eficiencia se logra tanto a nivel de consumo de recursos logicos (Thornton et al.,

1999), de velocidad y de potencia, (Todorovich et al., 2001).

El algoritmo a usar se reduce de la contraccion de la ecuacion (5.9), que a

continuacion se repite:

Vr(k) · ∆t(k) > 1 (5.14)

Analizando el producto en planteado en (5.14), se observa que la magnitud

a la izquierda de la desigualdad es decimal. Es deseable que el calculo de (5.14)

se lleve a cabo a traves de magnitudes enteras. Para ello es necesario considerar

que la magnitud ∆t(k) es nk · Tc, como se planteo anteriormente en (5.5), por

lo que solo Tc es decimal, ya que el n es un valor entero. En la implementacion

hardware del algoritmo, el Tc es una magnitud funcion de la temporizacion de la

FPGA. De manera de realizar toda la operatoria con enteros, se debe transformar

la desigualdad planteada en (5.14) en la siguiente Ecuacion 5.15:

VR · nk >1

Tclk

(5.15)

En (5.15) el Tc sera el perıodo del reloj (clock) sincronico del sistema o un

multiplo entero del mismo, cuyo periodo sera Tclk. Lo hecho hasta aquı no implica

ningun cambio significativo en el algoritmo, pero la multiplicacion decimal se

reduce a enteros. La puesta en practica de hardware de (5.15) se presenta en la

Fig. 5.3, donde se muestra el diagrama en bloques del controlador. El contador

Page 126: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 109

cuenta perıodos de reloj de Tclk, lo que representa la ejecucion de (5.5).

La implementacion hardware de (5.15) es llevada a cabo por los bloques mul-

tiplicador y comparador. Cuando se satisface la igualdad, se ordena un nuevo

paso. La senal entonces alimenta la interfaz del driver, que comanda los pulsos al

driver de cada fase del motor. La Fig. 5.3 muestra un motor de 4 fases.

El perıodo de reloj, Tclk, en la implementacion hardware, es equivalente al

tiempo de calculo en la ejecucion del algoritmo mediante software en el DSP

(Seccion 5.4). El perıodo de reloj Tclk define la resolucion del tiempo del contro-

lador. Como el Tclk se puede reducir mediante el uso de hardware, el efecto del

cuantizacion sobre la velocidad mecanica sera insignificante.

5.5.2. Reduccion del area de la implementacion

Como se ve en la Fig. 5.3, es necesario el uso de un multiplicador. Una solu-

cion directa para la implementacion hardware del multiplicador es una estructura

combinatoria (conocido en la bibliografıa como multiplicador paralelo). Esta so-

lucion presenta el mınimo retardo impuesto por el arreglo de compuertas logicas.

Si bien con esta solucion la ejecucion del algoritmo se realiza a la maximo veloci-

dad, este retardo es variable y depende del producto de los operandos. En el caso

del algoritmo a resolver, este tiempo se podrıa fijar mediante una sincronizacion

a partir de la registration de los eventos y consecuentemente el Tc = Tclk.

Sin embargo, esta solucion implica una gran cantidad de elementos logicos,

que aumentan proporcionalmente a la longitud de palabra de los operandos. Un

ejemplo de esto, serıa un producto de 16 × 16 bits, el cual requiere el 90 % de

las compuertas logicas de una FPGA de 10000 elementos Xilinx (1999a), Xilinx

(1999b).

Page 127: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 110

Multiplicador

Interfaz deldriver

VRnk

Comparador

V 1/TR Cnk´ ³

Contador

Clock

Tclk

Drivers dePotencia

Motor/espaso a paso

VR nk´

16

3232

16

1/TC

Generador delperfil de velocidad

Figura 5.3: Sistema de control basado en FPGA.

Una arquitectura secuencial para el multiplicador se propone para superar el

problema de consumo de recursos logicos. El multiplicador secuencial del tipo

suma y desplazamiento es analizado en Hennessy and Patterson (1996). Una cla-

sificacion y descripcion de los diversos multiplicadores puede tambien encontrarse

en el trabajo de Boemo et al. (1993).

Este tipo de multiplicador permite una reduccion eficaz del area de alrededor

de 10 veces, pero en detrimento del tiempo de calculo. En este caso se requiere

16 ciclos de reloj para la ejecucion de un productos de 16-bits. Sin embargo, con

un reloj funcionando a 40 MHz, el Tclk es tan solo 400 ns. En la implementacion

de este sistema se utilizo una variante del multiplicador secuencial de suma y

desplazamiento. Esto permite la implementacion practica del algoritmo incluso

en FPGAs de aplicacion general de 6000 compuertas logicas.

Page 128: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 111

En la Fig. 5.3 se observa un bloque generador del perfil de velocidad. En

este caso, un perfil trapezoidal es generado, con varios parametros, tales como

aceleracion, mınima y maxima velocidad y cantidad del pasos. El controlador

decide como el perfil se debe basa en estos parametros, y genera un perfil de

referencia para manejar el motor paso a paso.

5.6. Conclusiones

En este capıtulo se propuso una nueva tecnica de temporizacion y se imple-

mento la misma en forma real en un controlador industrial disenado y construido

para el accionamiento de multiples motores paso a paso.

Del analisis del tiempo de procesamiento de los algoritmos convencionales,

para el desarrollo del mas comun de los perfiles de velocidad, se concluye que los

mismos no pueden alcanzar altas velocidades. Mucho menos en el comando de

multiples motores, ya que si se desea el accionamiento simultaneo de M motores

se requieren M timers y el tiempo de ejecucion se alarga proporcionalmente,

es decir, la actualizacion de los pulsos no puede producirse antes de M × Tc,

en el mejor de los casos. Si se analiza nuevamente el ejemplo 6, pero se busca

ahora determinar el tiempo de procesamiento involucrado en el accionamiento

simultaneo de 12 accionamientos. Se encuentra que la maxima velocidad puede

ser solo de 6677 pasos s−1. Es por esta razon, que el perfil, como se plantea en el

ejemplo, no puede lograrse.

La tecnica propuesta resuelve el perfil de referencia en forma iterativa. Se

consigue de esta manera, no utilizar hardware adicional, como son los timers,

eliminandose el lımite de velocidad que imponen los mismos, obteniendose ma-

yores velocidades. Se desarrolla una tecnica complementaria para el desarrollo de

Page 129: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 112

perfiles de velocidad de aceleracion no-contante. De la comparacion de la imple-

mentacion de los mismos en DSP, se concluye que el numero de MACs en el nucleo

del algoritmo resulto en solo 8 MACs para el perfil parabolico y 10 MACs para

el de curva-S. Esto hace al sistema muy conveniente cuando se necesita la com-

binacion de alta velocidad y perfiles de velocidad suaves. Mediante el algoritmo

propuesto es posible, incluso, el accionamiento de multiples motores.

Se logro reformular el algoritmo propuesto de forma de transformar las opera-

ciones decimales en enteras. De esta forma, se logro implementar este algoritmo

en FPGA. Esto permite una disminucion substancial del tiempo de transforma-

cion equivalente desarrollado por los controles clasicos de la velocidad. Como

consecuencia, el motor puede alcanzar velocidades muy altas, nunca obtenidas

con los sistemas basados en los algoritmos estandar. Debido a la arquitectura del

sistema, una sola FPGA puede manejar varios motores simultaneamente sin el

aumento del tiempo de procesamiento. Se mostro como es posible manejar tres

motores paso a paso con una FPGAs estandar de 6000 puertas logicas. Esta ven-

taja hace el sistema muy conveniente puesto que permite el aumento del numero

de motores, simplemente usando un FPGA mas grande.

Page 130: Tesis_Gonzalez_Sergio.pdf

Capıtulo 5. Tecnica de Temporizacion Propuesta 113

Referencias

Barrett, R., Berry, M. W., Chan, T. F., Demmel, J., Donato, J., Dongarra, J.,Eijkhout, V., Pozo, R., Romine, C., and van der Vorst, H. (1993). Templates forthe Solution of Linear Systems: Building Blocks for Iterative Methods. Societyfor Industrial and Applied Mathematics (SIAM), Philadelphia, PA.

Boemo, E., Juarez, E., and Meneses, J. (1993). Taxonomıa de multiplicadores.Proc. VIII DCIS Conference. Univ. of Malaga., pages 185–190.

Gerald, C. F. and Wheatley, P. O. (2004). Applied Numerical Analysis. Addison-Wesley Publishing Company, Reading, MA, 7th edition.

Hayes, J. P. (1996). Introduccion al Diseno Logico Digital. Addison-WesleyIberoamericana, Wilmington, Delaware, U.S.A.

Hennessy, J. L. and Patterson, D. (1996). Computer Architecture: A QuantitativeApproach. Morgan Kaufmann Publishers, Inc., San Francisco, CA.

Kenjo, T. and Sugawara, A. (1995). Stepping Motors and their MicroprocessorControls. Monographs in Electrical and Electronic Engineering. Oxford Uni-versity Press, Oxford, U.K., 2nd reprint edition.

Lovrich, A. (1997). Doublelength floating-point arithmetic on the TMS320C30.Application Report SPRA114, Texas Instruments Inc., Houston, Texas.

Saad, Y. (2003). Iterative Methods for Sparse Linear Equations. Society forIndustrial and Applied Mathematics (SIAM), Philadelphia, PA, 2nd edition.

Texas Instruments (1997). TMS320C3x user’s guide. SPRU031E revision L2558539-9761.

Thornton, M., Gaiche, J., and Lemieux, J. (1999). Tradeoff analysis of integermultiplier circuits implemented in FPGAs. Communications, Computers andSignal Processing IEEE Pacific RIM Conference, pages 301–304.

Todorovich, E., Sutter, G., Acosta, N., Boemo, E., and Lopez-Buedo, S. (2001).Relacion entre velocidad y consumo en FPGAs. VII Workshop Iberchip, pages1–6 CD Browser.

Van den Bout, D. E. (1999). The Practical Xilinx Designer Lab Book: Version1.5. Prentice Hall, Upper Saddle River, NJ.

Xilinx, I. (1999a). The Programmable Logic Data Book. San Jose, CA.

Xilinx, I. (1999b). Xilinx Core Generator Tools. San Jose, CA.

Page 131: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6

Resultados experimentales

Este capıtulo se divide en dos secciones principales. En la Seccion 6.1 se abor-

daran los resultados experimentales realizados por la implementacion en DSP.

Aquı diferentes perfiles de velocidad son desarrollados y los resultados son mos-

trados.

En la Seccion 6.2 se abordaran los resultados obtenidos por dos implementa-

ciones en FPGA. En la primera se explora la posibilidad de cambiar el multipli-

cador estandar por un multiplicador secuencial. En la segunda implementacion

en FPGA, Seccion 6.2.1, se realiza un esfuerzo para reducir aun mas el tiempo

de procesamiento involucrado por el multiplicador, mediante la utilizacion de un

nuevo tipo de multiplicador secuencial. En todos los casos, los resultados experi-

mentales son mostrados y evaluados.

6.1. Implementacion en DSP

El objetivo de la implementacion en DSP es desarrollar experiencias que mues-

tren la performance realmente necesaria de un sistema basado en microprocesador

para ejecutar movimientos con estos perfiles. Los parametros con que se midio esta

114

Page 132: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 115

performance fueron el numero de instrucciones de multiplicacion-adicion (MACs)

y el tiempo total del ciclo de actualizacion del sistema inteligente. Se implemen-

taron perfiles de velocidad trapezoidal, parabolico y con curvas-S, teniendo estos

perfiles una marcada diferencia de implementacion. Las experiencias se realiza-

ron con las siguientes caracterısticas: Vmın = 500pasoss

, Vmax = 1500pasoss

y una

aceleracion amax = 1000pasoss2

.

Se uso un DSP TMS320C-50 de Texas Instruments que es un dispositivo de

punto flotante de 50 ns por MAC y con un motor paso a paso cuyas caracterısticas

son: 400pasosrev

, momento de inercia 13 ·10−7 kg m2, Tret = 33 ·10−7 N m. Los valores

de la posicion fueron obtenidos a traves de un encoder optico del tipo incremental

de la serie ELAP-E521 con una resolucion de 1024 pulsos por revolucion cuyo mo-

mento de inercia 2,5·10−6 kg m2. Se conecto el mismo a traves de un acoplamiento

de la serie HELICAL-WA25 cuyo momento de inercia es 2,3 · 10−6 kg m2.

Se aprecia en la Fig. 6.1 el perfil trapezoidal, en la Fig. 6.2 el perfil parabolico

y en la Fig. 6.3 el perfil basado en curvas-S.

Page 133: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 116

0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20

500

1000

1500

Per

fil d

e ve

loci

dad

[pas

os/s

eg]

tiempo [seg]

Figura 6.1: Perfil Trapezoidal adquirido con encoder optico de 1024 ppr.

Page 134: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 117

0.5 1 1.5 2 2.5 3 3.5 40

500

1000

1500

Per

fil d

e ve

loci

dad

[pas

os/s

eg]

tiempo [seg]

Figura 6.2: Perfil parabolico adquirido con encoder optico de 1024 ppr.

Page 135: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 118

0 0.5 1 1.5 2 2.5 30

500

1000

1500

Per

fil d

e ve

loci

dad

[pas

os/s

eg]

tiempo [seg]

Figura 6.3: Perfil con curvas-S adquirido con encoder optico de 1024 ppr.

Page 136: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 119

Un nuevo conjunto de pruebas experimentales fueron realizadas, ahora con

un motor de uso industrial. El motor usado en esta serie de experimentos es un

SLO–SYN KML093F14C5 cuyas caracterısticas son: 200pasorev

, torque de retencion

Thold = 816 N cm e inercia del rotor 3,32 kg cm2. Las hojas de datos del fabricante

del motor de adjuntan en el apendice E. Los valores de la posicion fueron obtenidos

a traves de un encoder optico incremental con una resolucion de 500 pulsos por

revolucion. El mismo tiene un momento de inercia asociado de 260 ·10−6 oz in s2 y

las hojas de datos del fabricante del encoder de adjuntan en tambien el apendice E.

El driver, es un SLO-SYN MD808, configurado para producir 1000 pulsos por

revolucion, es decir, en un motor de 200 ppr es un modo de micro paso de 15. Se

aprecia en la Fig. 6.4 el perfil trapezoidal, en la Fig. 6.5 el perfil parabolico y en

la Fig. 6.6 el perfil basado en curvas-S.

De los resultados obtenidos, es posible verificar que la nueva tecnica funciona

tanto para perfiles de velocidad con aceleracion constante como para perfiles con

aceleracion no-constante.

A pesar que los perfiles implementados poseen diferencias en la implemen-

tacion, la formulacion general para los perfiles de velocidad introducida en la

Seccion 5.4.1 del Capıtulo 5 probo ser efectiva. Esto se comprueba ya que el

numero de MACs adicionales en el nucleo del algoritmo resulto en solo 8 MACs

para el parabolico y 10 MACs para el de curva-S.

Los detalles del hardware en la implementacion en DSP se muestran en el

Apendice B. En el Apendice C se muestran los detalles del diseno del Software del

DSP, ası como los detalles de su eleccion, ası como un resumen de su arquitectura

interna.

Page 137: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 120

1 2 3 4 5 6 7 8 9 10 11

0

2000

4000

6000

8000

10000

12000

14000

16000

Velocity Profile

Ste

ps/s

Time, [s]

Figura 6.4: Perfil Trapezoidal adquirido con encoder optico de 500 ppr.

Page 138: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 121

0 5 10 15 200

2000

4000

6000

8000

10000

12000

14000

16000

Velocity Profile

Ste

ps/s

Time, [s]

Figura 6.5: Perfil parabolico adquirido con encoder optico de 500 ppr.

Page 139: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 122

5 10 15 20 25 30 35 400

2000

4000

6000

8000

10000

12000

14000

16000

18000Velocity Profile

Ste

ps/s

Time, [s]

Figura 6.6: Perfil con curvas-S adquirido con encoder optico de 500 ppr.

Page 140: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 123

6.2. Resultados experimentales de la implemen-

tacion en FPGA

De manera de evaluar el funcionamiento del sistema, el algoritmo desarrollado

fue implementado en una Xilinx FPGA XC4006-3. Este dispositivo puede fun-

cionar con un reloj de hasta 80 MHz y tiene una capacidad de 6000 puertas de

logicas. Los detalles de la implementacion se muestran en el apendice D. En el

mismo se presentan los esquematicos asociados a la implementacion hardware en

el entorno integrado de diseno para la misma es el Xilinx Foundation Series 3.19i.

En los experimentos se utilizo un motor hıbrido cuyas caracterısticas son:

400paso

rev, momento de inercia 13 · 10−7 kg m2 y torque de retencion Tret = 33 ·

10−7 N m. No se conecto ninguna carga adicional.

La medicion de la posicion fue obtenida mediante un encoder optico incremen-

tal ELAP-E521, cuya resolucion es de 1024 pulsos por revolucion y un momento de

inercia asociado de 2,5 · 10−6 kg m2. El acople fue realizado con un acople elastico

HELICAL-WA25 con un momento de inercia asociado de 2,3 · 10−6 kg m2.

La curva de la posicion fue obtenida leyendo la senal del encoder con un

contador de tiempo de alta resolucion. El perfil de la velocidad fue encontrado off-

line, realizando derivacion numerica de los datos de posicion del encoder optico.

El multiplicador funciona con un reloj sincronico de 40 MHz, con lo que el

tiempo para la multiplicacion es de 400 ns. Se adopto un Tclk = 800 ns, que sigue

siendo despreciable en relacion a la velocidad del motor.

El motor paso a paso debe desarrollar un desplazamiento de 12000 pasos

mediante un perfil trapezoidal de referencia con las siguientes caracterısticas:

Vmın = 500pasoss

, Vmax = 6000pasoss

y aceleracion maxima amax = 4200pasoss2

.

Los perfiles resultantes de velocidad y posicion se pueden observar en la

Fig. 6.7. El bajo tiempo de procesamiento, Tclk, permite un perfil casi continuo

Page 141: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 124

y velocidades muy altas, mas arriba que los generados por algoritmos estandar

implementados en software. Debido a la caracterıstica del perfil, el motor de pasos

pasa con el area de la resonancia, tal como se predice en los textos de Acarnley

(2002) y Kenjo and Sugawara (1995) y en detalle en los trabajos de Robert et al.

(2001) y Pera et al. (2000). Este efecto puede observarse en las bajas velocida-

des en los perfiles, sin embargo, este efecto no logra sacar de sincronismo a las

maquinas ya que las mismas se encuentran en la zona de trabajo por debajo de

la curva de pull-out1. De esta manera se evita la perdida de pasos.

Perfil de posición

Perfil de velocidad

Tiempo, [s]

Posi

ción, [r

ev]

Velo

cidad, [r

ev/

s]

0 0.5 1 1.5 2 2.5 30

5

10

15

20

25

30

0 0.5 1 1.5 2 2.5 30

2.5

5.0

7.5

10.0

12.5

15.0

Figura 6.7: Perfil de velocidad y posicion del accionamiento controlado por unsistema basado en FPGA.

1Previo a la obtencion de resultados experimentales, los perfiles son simulados para verificarque la puedan enfrentar la inercia pedida.

Page 142: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 125

La Fig. 6.8 muestra un perfil completo obtenido a las altas velocidades con

paso completo. Observese la continuidad en toda la gama efectiva de la velocidad.

0 0.5 1 1.5 2 2.5 3 3.5 40

12.5

25.0

37.5

50.0

62.5

Perfil de velocidad

Tiempo, [s]

Velo

cidad, [r

ev/

s]

Figura 6.8: Perfil de velocidad del accionamiento controlado por un sistema ba-sado en FPGA.

La Fig. 6.9 muestra un perfil completo obtenido para un aplicacion en mi-

cropasos. El motor usado en este experimento es un SLO–SYN KML093F14C5

cuyas caracterısticas son: 200pasorev

, torque de retencion Thold = 816 N cm e inercia

del rotor 3,32 kg cm2. Los valores de la posicion fueron obtenidos a traves de un

encoder optico incremental con una resolucion de 500 pulsos por revolucion. El

driver, con capacidad de manejo de micropasos, es un SLO-SYN MD808, configu-

rado para producir 2000 pulsos por revolucion. Por consiguiente, el sistema debe

generar un perfil de alta velocidad con Vmın = 500pasoss

, Vmax = 50000pasoss

y una

Page 143: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 126

aceleracion maxima amax = 5000pasoss2

. El Tclk adoptado para esta aplicacion fue

de 400 ns de manera de reducir los saltos de la velocidad en Vmax a 1000pasoss

, de

manera que el salto producido sea menor que el 5 % de Vmax. Este efecto puede

observarse, como una componente ondulatoria, en el plateau del perfil.

0 5 10 15 20 25 300

4

8

12

16

20

24

28

Time, [s]

Perfil de velocidad

Velo

cidad, [r

ev/

s]

Figura 6.9: Perfil de velocidad del accionamiento utilizando el modo de micropa-sos.

El sistema alcanzo muy altas velocidades, inalcanzables previamente con los

algoritmos estandares ejecutados por un procesador. Ademas el nuevo controlador

no requiere contadores de tiempo2, los cuales son necesarios con los sistemas

2En la bibliografıa anglosajona a los contadores de tiempo por hardware se los conoce comotimers. Los mismos son modulos que el usuario elige usar, pero son recursos contados. Un DSPactual tiene en promedio 2 timers de uso general.

Page 144: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 127

convencionales, y el procesador fue substituido por un FPGA de tamano similar

y costo equivalente.

6.2.1. Implementacion FPGA en micropasos

De la seccion anterior se concluye que para reducir el Tc, dos instancias son

posibles:

Mejora tecnologica de la FPGA empleada.

Reduccion del Tc a traves de de un nuevo tipo de multiplicador.

El primer ıtem es directo, un cambio en la tecnologıa de fabricacion de la

FPGA, redunda en una mayor velocidad del reloj sincronico del sistema y por

ende, en una reduccion de la cuantizacion. Sin embargo, una actualizacion tec-

nologica puede ser costosa y en algunos casos inconveniente debido al cambio en

el encapsulando del dispositivo, valores distintos de tension de alimentacion y de

entrada/salida, consumo de potencia, re-diseno del circuito impreso, entre otros.

Otra posibilidad, es utilizar otro tipo de multiplicador secuencial con distintas

prestaciones al usado en la Seccion 6.2. Un multiplicador secuencial con carac-

terısticas superiores, se describe en el trabajo Gonzalez et al. (2006).

La Fig. 6.10 muestra un perfil de movimientos realizado por el motor. Se

observa el perfil de velocidad y el perfil de posicion. El sistema de accionamiento

es el mismo que se uso en las experiencias en modo de funcionamiento por pasos,

analizado en la Seccion 6.2. El sistema ahora debe producir una velocidad de

Vmax = 72000pasoss

, para ello se adopta un Tc de 200 ns de manera de reducir los

saltos de velocidad por debajo de 5 de la Vmax. Como en las mediciones anteriores,

una componente ondulatoria puede observarse en el plateau del perfil.

Page 145: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 128

Perfil de posición

Perfil de velocidad

Tiempo, [s]

Tiempo, [s]

Posi

ción, [r

ev]

Velo

cidad, [r

ev/

s]

Figura 6.10: Perfiles de posicion y velocidad para un sistema de accionamientoen modo micropaso.

6.3. Conclusiones

De los resultados experimentales realizados en la implementacion con DSP, se

llega a las siguientes conclusiones.

El nuevo algoritmo se basa en computos mas directos. Experimentalmente

se demuestra que un Tc mas de cinco veces menor que en los algoritmos

convencionales es alcanzable.

Los perfiles obtenidos por el algoritmo presentan un efecto de cuantiza-

cion en velocidad. Este efecto es inversamente proporcional al Tc, por lo

Page 146: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 129

que al reducir el mismo, el efecto queda minimizado para un rango util de

velocidad.

Se concluye de la Tabla 5.4 y de las Figs. 6.1, 6.2 y 6.3 que el tipo de perfil

a desarrollar tiene un impacto importante en la implementacion. Como

ejemplo de esto, se aprecia como los perfiles suaves como el de curvas-S,

que poseen una buena caracterıstica respecto de jerking, requieren mayor

tiempo de calculo que los perfiles trapezoidales. Por ende, presentan un

problema de cuantizacion mas evidente.

Para hacer nulos los efectos de la cuantizacion, presente en los resultados obte-

nidos con DSP, se implemento el algoritmo propuesto en FPGA. De los resultados

experimentales realizados, se arribo a las siguientes conclusiones.

Experimentalmente se demuestra que un Tc ochenta veces menor que con

los algoritmo estandares. Si se utiliza un multiplicador incluso mas eficiente,

un Tc mas de 150 veces menor es posible.

Se concluye de las experiencias realizadas que con un Tc reducido con una

implementacion hardware, el efecto de cuantizacion es inapreciable incluso

para accionamientos micropaso funcionando a muy alta velocidad.

De manera de obtener los resultados expuestos aquı, fue necesario contar con

un sistema para poder registrar y evaluar las caracterısticas de estas maquinas en

condiciones de alta dinamica. Un sistema de adquisicion que permitio capturar

en tiempo real y registrar los datos cinematicos de las maquinas a alta velocidad

fue desarrollado para poder adquirir los resultados experimentales mostrados. Los

detalles y el diseno de este sistema es desarrollado en el Capıtulo 7.

Page 147: Tesis_Gonzalez_Sergio.pdf

Capıtulo 6. Resultados experimentales 130

Referencias

Acarnley, P. (2002). Stepping Motors: A Guide to Modern Theory and Practice.IEE Control Engineering Series, no. 63. Peter Peregrinus Ltd, London, U.K.,4th edition.

Gonzalez, S. A., Funes, M. A., and Carrica, D. (2006). Fpga based stepper motorcontroller. In Boemo, E., Sutter, G., Todorovich, E., and Lopez-Buedo, S.,editors, Proc. of the II Southern Conference on Programmable Logic, SPL’2006,pages 247–256, Mar del Plata, Argentina. Surlabs Project.

Kenjo, T. and Sugawara, A. (1995). Stepping Motors and their MicroprocessorControls. Monographs in Electrical and Electronic Engineering. Oxford Uni-versity Press, Oxford, U.K., 2nd reprint edition.

Pera, M.-C., Robert, B., and Goeldel, C. (2000). Nonlinear dynamics in elec-tromechanical systems-application to a hybrid stepping motor. Electromotion,7(1):31–42.

Robert, B., Alin, F., and Goeldel, C. (2001). Aperiodic and chaotic dynamics inhybrid step motor-new experimental results. In Proceedings of the IEEE Inter-national Symposium on Industrial Electronics-ISIE’2001, pages 2136–2141.

Page 148: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7

Sistema de Adquisicion de

Movimientos

Es necesario contar con un sistema de adquisicion que permita capturar en

tiempo real y registrar los datos cinematicos de las maquinas a alta velocidad.

Previo al desarrollo de cualquier implementacion de la tecnica de accionamiento

propuesta es necesario contar con un sistema para poder registrar y evaluar las

caracterısticas de estas maquinas en condiciones de alta dinamica.

La adquisicion y registro de las senales cinematicas de un solo motor es po-

sible con la actual tecnologıa de computadoras (Bhatti and Hannaford, 1997),

(Baluta and Stefan Resmerita, 1997), (Donciu and Rapuano, 2004). Sin embar-

go, la adquisicion de varios ejes a muy alta dinamica, no es posible realizarlo

con tecnicas tradicionales sin pagar el precio de la enorme cantidad de memo-

ria especıfica (high-speed dual-port FIFO) requerida. Particularmente cuando se

utilizan sensores opticos de muy alta resolucion.

El motivo de este obstaculo es la gran cantidad de datos que se requieren

almacenar en muy corto tiempo, debido al impredecible tiempo de latencia de

los sistemas operativos (OSs) modernos. Este tiempo de latencia hace que las

131

Page 149: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 132

memorias necesarias para guardar los datos sean muy grandes. Cuando son varios

los ejes a adquirir los metodos clasicos se vuelven impracticos.

Para poder resolver estos inconvenientes surgio la idea de desarrollar un meto-

do de compresion, especıficamente disenado para datos cinematicos provenientes

de encoders. Esto hizo posible el sistema para el adquisicion y registro de varios

ejes accionados a muy alta dinamica.

7.1. Adquisicion de movimientos incrementales

Actualmente existe un gran esfuerzo en el desarrollo de sistemas de control

de movimiento, en donde se buscan maquinas y controles con mejor performance

en cuanto a precision en la posicion angular y velocidad. Este esfuerzo de in-

vestigacion requiere de sistemas de medicion o sensado de posicion angular de

gran precision y gran velocidad a fin de evaluar los avances en el campo de las

maquinas y sus controladores, (Kolokolov et al., 2002). Un sistema de adquisicion

de movimiento no solo debe visualizar la variable cinematica muy rapidamente,

sino que ademas debe registrarla para todo el movimiento. Algunas aplicaciones

especiales, como lo son los hexapod (sistemas de posicionamiento de seis grados

de libertad), requieren que el sensado de posicion y velocidad en los 6 ejes sea en

forma continua y con muy alta resolucion. Esto es debido a que estas maquinas

poseen movimientos de algunos centımetros con precisiones nanometricas. Sin

sistemas de adquisicion asociados a los ejes de la maquina, el control sobre las

mismas no podrıa realizarse.

Para validar tanto el modelo planteado como los sistemas de control es nece-

sario desarrollar un sistema de adquisicion de movimiento de alta performance.

Page 150: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 133

7.2. Sistemas de adquisicion de movimiento

Una de las formas de medir la posicion angular es montando sobre el eje

de rotacion del motor un encoder optico. El mismo convierte un desplazamiento

angular en pulsos electricos. Luego mediante un sistema de procesamiento, se tra-

ducen las senales de los mismos en informacion digital de la posicion (Rahamam

and Poo, 1985), (Bonert, 1989), (Kavanagh, 2000).

En aplicaciones de alta dinamica, el metodo del perıodo Brown et al. (1992) es

preferido, ya que la informacion es obtenida en cada paso del encoder. De esta ma-

nera se conoce la forma del movimiento con la maxima resolucion posible, lo que

no puede hacerse con otros metodos. Una vez obtenida la posicion instantanea,

se pueden calcular las demas variables cinematicas (velocidad, aceleracion, etc)

simplemente usando un calculo numerico.

En el metodo del perıodo, el tiempo que transcurre entre dos ranuras del

encoder se mide a traves de un contador de pulsos de perıodo Tk, como puede

verse en la Fig. 7.1. Conocida la distancia entre ranuras ∆xenc y con los datos

del tiempo medidos, puede obtenerse la evolucion de la posicion en funcion del

tiempo.

DATO i = Ni DATO i+1 = Ni+1

CLOCK DEREFERENCIA

SEÑAL AMEDIR

T = Ni i kT T = Ni+1 i+1 kT

Tk

Figura 7.1: Metodo del perıodo.

Page 151: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 134

Debido a que los dispositivos contadores registran un numero entero de pulsos,

existira una incerteza de un bit en la medicion de los pulsos de encoder. Por lo

tanto el error es inversamente proporcional a la velocidad de rotacion, ya que, a

medida que esta aumenta, se registran menos pulsos. Este tipo de error puede

reducirse aumentando la frecuencia del clock de referencia.

Visto que el intervalo entre los datos provistos por el encoder disminuye a

medida que la velocidad aumenta, el sistema de calculo debe ser capaz de adquirir

un dato antes de que el encoder entregue otro, para que no se produzca una

sobreescritura y por lo tanto perdida de informacion.

Para alojar los datos temporalmente se requiere el uso de memorias especiales

del tipo dual-port. El tamano de la memoria necesaria para almacenar tan solo al-

gunos milisegundos de datos generados se vuelve importante en maquinas de alta

dinamica. Esto a limitado el desarrollo de sistemas on-line para la medicion de la

posicion y la evaluacion, con precision, de los sistemas de control de movimiento.

En consecuencia es importante desarrollar sistemas de medicion que contemplen

tecnicas que reduzcan la cantidad de memoria necesaria.

7.3. Sistema propuesto

El sistema de medicion de alta precision se fundamenta en el metodo del

perıodo. Este utiliza un contador digital para medir el ancho de un pulso. El

tiempo entre dos flancos de encoder es:

∆tenc = NT · Tk (7.1)

donde NT es el numero de pulsos de reloj dentro del tiempo ∆tenc.

Dado que:

Page 152: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 135

v =∆xenc

∆tenc

(7.2)

entonces

NT · Tk =∆xenc

v(7.3)

por lo tanto

NT =∆xenc

Tk

1

v(7.4)

El error relativo de este metodo esta formulado por:

emax =1

NTmin

(7.5)

Introduciendo la (7.4) en la (7.5), se obtiene:

emax =Tk

∆xenc

vmax (7.6)

En la ecuacion (7.6) se puede observar que el error es maximo cuando la

velocidad es maxima. Para reducir este error se debe disminuir Tk ya que ∆xenc

esta determinado por la precision deseada en la medicion de la posicion.

La ecuacion (7.6) se puede reescribir de la siguiente manera:

emax = Tk · fencmax (7.7)

donde fencmax representa la maxima frecuencia de pulsos que envıa el encoder.

Por lo tanto, dada una velocidad angular maxima, para reducir el error es

necesario poder disminuir el Tk. Se observa tambien que a medida que la velocidad

disminuye la precision mejora.

Page 153: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 136

En el extremo de velocidades bajas donde los tiempos de los pulsos de encoder

resultan muy elevados, el numero de bits de las palabras que indican el resultado

es tambien muy grande. El tiempo maximo entre pulsos esta dado por:

∆tenc = 2NTmaxTk (7.8)

por lo tanto

NTmax=log[∆tenc/Tk]

log 2(7.9)

entonces el numero de bits N del contador debe ser:

N ≧ NTmax (7.10)

Debido a la gran cantidad de datos producidos por los encoders, es necesario

tener una memoria local, entre la etapa de medicion de los pulsos y el procesador

de datos. Las memorias usadas para este fin son las tipo FIFO (First Input First

Output) con capacidad de acceso tipo dual-port.

Para que el sistema funcione en forma segura, evitando la perdida de datos,

el tamano del buffer FIFO debe ser lo suficientemente grande para que no exista

sobreescritura y perdida de la informacion durante el tiempo que tarda el proce-

sador en atender al dispositivo ante un pedido de interrupcion. Como procesador

se propone la utilizacion de una PC con un sistema operativo basado en Windows.

En este sistema, el tiempo de latencia, Tlatencia, que es el tiempo que transcurre

desde que se efectua el pedido de interrupcion hasta que se inicia la rutina de

servicio de la misma, es tıpicamente 123 ms (Brandt and Dannenberg, 1998), para

una utilizacion de la CPU del 80 %.

A medida que las velocidades aumentan, tambien es mayor la cantidad de

Page 154: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 137

informacion que llega al FIFO durante los 123 ms mencionados. La capacidad

mınima del FIFO, Cmin, puede expresarse de la siguiente manera :

Cmin = 2 · Tlatencia ·vmax

∆xenc

(7.11)

El 2 en la ecuacion (7.11) es debido a que el FIFO debe estar lleno solo hasta

la mitad para solicitar un pedido de interrupcion. Segun la ecuacion (7.11), la

cantidad de informacion es directamente proporcional a la velocidad angular del

eje. Por ejemplo, para una velocidad angular maxima de 9000 rpm (utilizando un

encoder de 1024 ppr), el tamano mınimo del FIFO debe ser de 36900 palabras de

N bits. Este tamano es importante tratandose de memorias FIFO, por lo que es

muy conveniente introducir tecnicas para su reduccion. A fin de reducir el tamano

de esta memoria, se introduce una tecnica de compresion de datos en tiempo real.

7.4. Tecnica de compresion

Esta tecnica de compresion se desarrollo en base al concepto de que a medida

que la velocidad crece, el contador registra menos pulsos del clock de referencia,

como puede observarse en el grafico de la Fig. 7.2. Por tanto, los bits mas signi-

ficativos de la palabra digital que representa el perıodo no habran cambiado, y

seran iguales a cero, por lo que seran redundantes y pueden ser desechados. Si

el modulo del contador es N y la informacion util esta contenida en los Q bits

menos significativos, habra N − Q bits redundantes.

En lugar de entregarle al procesador una sola palabra digital de N bits, se

propone que el procesador adquiera una palabra que contenga, j ∗ Q ≤ N bits,

donde j es el numero de palabras que contienen informacion util sin redundancias.

Para que el procesador sea capaz de reconstruir cada dato contenido en una

Page 155: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 138

Figura 7.2: Reduccion del numero de pulsos con el aumento de la velocidad.

lectura, sera necesario adicionar P bits, que indiquen la configuracion contenida

en una lectura del dispositivo contador. Por lo tanto el procesador debera leer,

finalmente, una palabra de N + P bits.

En la Fig. 7.3 se muestra el diagrama en bloques del sistema propuesto. El

mismo reside en el bus ISA de una PC, que se utiliza para procesar los datos y ex-

hibirlos en forma grafica. El contador digital de N = 24 bits es el que implementa

el metodo del perıodo, mientras que el generador de sincronismo se encarga de

que en cada nuevo pulso de encoder, el contenido del contador sea cargado en un

registro de desplazamiento. El decodificador de ancho de palabra detecta los bits

redundantes, e indica el tamano de la palabra util a almacenar, en combinaciones

Page 156: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 139

de Q = 24, 12, 8 y 6 bits, siempre que la cantidad total no supere los 24 bits.

Ası el circuito de control de habilitacion de los registros determina cuando se

producira el desplazamiento y los bits menos significativos, que contienen infor-

macion util, se almacenaran en el segundo registro, quedando en el primero los

bits redundantes, que seran desechados cuando una nueva palabra de encoder los

sobrescriba.

2 k·

24

8

Contador

FIFO

Clock dereferencia

Decodificadorde ancho de

palabra

Control dehabilitación

Generadorde palabrade control

Generadorde

sincronismo

Registro de desplazamiento

Registro de desplazamiento

d23

d0

BU

S IS

A

Encoder

incremental

Figura 7.3: Diagrama en bloques del sistema. Donde k es el numero de motores.

En la memoria FIFO se almacenan palabras de 32 bits, 24 de los cuales con-

tienen varias palabras del encoder con informacion util, y una palabra de control

adicional, de P = 4 bits, suministrada por el circuito generador de palabra de con-

trol, para indicarle al procesador que combinacion de palabras se almacenara en

un solo dato. Con los datos de 4 bits se forma un diccionario que indica 16 combi-

naciones de palabras de encoder con distinta cantidad de bits, como puede verse

en la Tabla 7.1.

Page 157: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 140

Combinaciones Palabra de Control0 24 00001 12 12 00012 12 8 00103 12 00114 8 8 8 01005 8 8 6 01016 8 12 01107 8 8 01118 8 6 8 10009 8 6 6 100110 6 6 6 6 101011 6 6 6 101112 6 6 8 110013 6 8 8 110114 6 8 6 111015 6 6 1111

Tabla 7.1: Diccionario de compresion.

Para la conformacion del diccionario se generaron las combinaciones posibles

entre palabras de 6, 8, 12 y 24 bits, y teniendo en cuenta las caracterısticas de

continuidad de los perfiles de velocidad se descartaron aquellas cuya posibilidad de

ocurrencia es menor. Entre las palabras seleccionadas se contemplaron tambien los

casos que pudieran ocurrir si se produjeran discontinuidades o saltos de velocidad.

Con este esquema de compresion de datos se logra almacenar la evolucion de

la posicion angular con un FIFO hasta cuatro veces mas pequeno.

Dado que se utilizan solo 24 bits de los 32 bits disponibles, de los 8 bits restan-

tes, 4 bits conforman la palabra del diccionario que permite la decodificacion, 1

bit indica la direccion de la rotacion y los tres ultimos bits indican el canal o motor

medido, en caso de adquirir varios motores en forma simultanea. Se envıa un solo

bit de sentido ya que cuando se produzca compresion de datos no habra cambio

en el sentido de giro debido a que las inversiones de la rotacion se producen a

Page 158: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 141

velocidades bajas, por lo que los datos generados seran de 24 bits.

7.4.1. Descompresion de los datos

En cuanto al procesamiento y descompresion de los datos, estos son extraıdos

del buffer FIFO por el procesador y almacenados en la memoria principal de la PC.

El proceso de medicion se completa cuando los datos generados son reconstruidos

vıa software. Las palabras digitales adquiridas y almacenadas en la PC, contienen

varios datos con informacion comprimida del encoder y para poder realizar alguna

operacion aritmetica con los mismos, y poder calcular la posicion o la velocidad,

es necesario descomprimir la informacion reconstituyendo el valor original de esos

datos.

Para realizar la descompresion se define una clase de objetos en C++, llamada

decodificacion. Dentro de esta clase se declaran algunas variables, que pueden

ser accedidas solo por objetos de la misma clase, y una serie de funciones que

manejan esas variables y comunican los resultados con el programa principal

y otros objetos. En la Fig. 7.4 se observa el diagrama de flujo del proceso de

descompresion.

Un dato almacenado en memoria, al que se le debe recuperar la informacion

original, es introducido en un objeto de la clase decodificacion. Se seleccionan

los bits 24 a 27, obteniendose la palabra de decodificacion y la misma es alma-

cenada en w control. Segun el valor de w control, se busca en el diccionario y

se identifica que configuracion de datos hay en la palabra adquirida, es decir, la

cantidad n de estos y el numero de bits que los componen. La configuracion se

almacena en la variable w deco y tambien se asigna el valor a n.

Una vez identificada la configuracion de los datos a recuperar, comienza el

proceso de descompresion propiamente dicho. Se identifica la cantidad de bits

Page 159: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 142

que contiene el primer dato almacenado en la palabra adquirida. Esto se con-

sigue aplicando una mascara a los cuatro bits menos significativos de w deco,

que esta formada por numeros en hexadecimal, como 0x6, 0x8, 0xC y 0xF, que

indican 6, 8, 12 y 24 bits respectivamente.

Sabiendo, entonces, la cantidad de bits, que forman el dato, se lo recupera

aplicando una mascara sobre los bits utiles. Antes de reiniciar el proceso para

recuperar los n datos, se realiza un desplazamiento de 4 bits hacia la derecha

sobre la variable w deco, para poder repetir la rutina con el siguiente dato.

Page 160: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 143

Signo = Lectura * 0x10000000

Adquirir Lectura

w_control = Lectura * 0x0f000000

Hay másdatos ?

Si

Si

No

No

w_deco=Buscar en diccionarion=Nro. de palabras a decodificar

i=0

Máscara = cantidad de bitsde la palabra a recuperar

Dato_final = Lectura * Máscara

Almacenar Dato_finaly Signo

i<n ?

Desplazar Lectura hacia laderecha según Máscara

Desplazar w_deco 4 bits a la derecha

Fin

Figura 7.4: Diagrama de flujo del proceso de descompresion de datos.

Page 161: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 144

7.5. Resultados experimentales

Se implemento un sistema de medicion capaz de medir frecuencias de en-

coder desde 1,2 Hz hasta 150 kHz (0,072 rpm hasta 9000 rpm con un encoder de

1024 ppr) con un emax = 0,75 %. Para cumplir con esta especificacion se utilizo un

clock de 20 MHz (Tk = 50 ns) y un contador de N = 24 bits.

Se utilizo una FPGA XC4006 de Xilinx para albergar la logica digital que

implementa la medicion del perıodo, el control del almacenamiento de los datos

y la administracion del bus ISA, tal como se muestra en la Fig. 7.5. El banco de

memoria FIFO fue implementado a partir de cuatro dispositivos de Integrated

Devices IDT7206 de 16 K×9bits.

Co

ne

cto

r d

e e

ntra

da

Me

dic

ión

pe

ríod

o

Co

mp

resi

ón

de

da

tos

Puerto de E/S

Control de IRQ

Decodificadorde direcciones

Memoria deconfiguración

Oscilador

FPGA

Bus

ISA

Banco FIFO

//

/

/

/

/

/

32

8

8

8

8

16

16

IDT7206

IDT7206

IDT7206

IDT7206

Figura 7.5: Sistema de medicion

Para verificar la exactitud de las mediciones se emularon las senales de un

Page 162: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 145

encoder con un generador de funciones digital Hewlett Packard 33120A y se ana-

lizaron los datos generados comparandolos con la medicion de los pulsos en un

contador Hewlett Packard HP5308A. Los resultados de las mediciones se mues-

tran la Fig. 7.6 donde se observa que las diferencias entre el perıodo medido (trazo

continuo) y el adquirido (marcas) comienzan a partir de los 100 kHz.

Las mediciones muestran que hasta frecuencias de 150 kHz el error relativo se

mantuvo menor al 1 %, como se muestra en la Fig. 7.7. Se aprecia, con marcas, la

desviacion maxima del error y, en trazo continuo, una aproximacion de segundo

orden del mismo.

A la maxima frecuencia especificada de 150 kHz, se midio el perıodo de los

pulsos con el contador universal resultando igual a 6,666709µs y con un error de

la medicion de 0,64 %, menor que el lımite propuesto de 0,75 %.

Page 163: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 146

101

102

101

102

Perí

odo [us]

Frecuencia [kHz]

MedidoAdquirido

(a) Mediciones para frecuencias de entrada de 10 kHz a 150 kHz.

102

101

Perí

odo [us]

Frecuencia [kHz]

MedidoAdquirido

(b) Detalle de las mediciones para frecuencias mayores a 100 kHz.

Figura 7.6: Mediciones de perıodo.

Page 164: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 147

50 100 150 200 250 3000

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

2

Err

or

rela

tivo (

%)

Frecuencia [kHz]

Figura 7.7: Error relativo de las mediciones.

Page 165: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 148

7.6. Conclusiones

Se diseno e implemento un sistema que permite medir de forma on-line la

evolucion dinamica de la posicion de maquinas rotativas, utilizando como trans-

ductor un encoder optico y una PC para procesar y visualizar los datos generados.

El sistema de medicion de alta precision y alta velocidad fue posible gracias a

la utilizacion de una tecnica de compresion de datos en tiempo real que logra

reducir hasta cuatro veces la capacidad de almacenamiento de la memoria FIFO

utilizada como buffer y los requerimientos de memoria del host. Este sistema de

compresion y descompresion no introduce ninguna degradacion en los datos. Se

consigue ası que el sistema trabaje por interrupciones bajo un sistema opera-

tivo tipo Windows donde el tiempo de latencia es muy grande y las llamadas

de interrupcion al CPU deben minimizarse. El error en las mediciones obteni-

do es producto del sistema de medicion del periodo. Este error permanece bien

por debajo del 1 % para el rango de velocidades de las maquinas rotativas entre

0,072 rpm y 9000 rpm usando un encoder de 1024 ppr.

Page 166: Tesis_Gonzalez_Sergio.pdf

Capıtulo 7. Sistema de Adquisicion de Movimientos 149

Referencias

Bhatti, P. and Hannaford, B. (1997). Single-chip velocity measurement system forincremental optical encoders. IEEE Trans. Contr. Syst. Technol., 5(6):654–661.

Bonert, R. (1989). Design of a high performance digital tachometer with a mi-crocontroller. IEEE Trans. Instrum. Meas., 38(6):1104–1107.

Brandt, E. and Dannenberg, R. B. (1998). Low-latency music software usingoff-the-shelf operating systems. In Proceedings of the International Compu-ter Music Conference, pages 137–141, San Francisco, California. InternationalComputer Music Association.

Brown, R., Schneider, S., and Mulligan, M. (1992). Analysis of algorithms forvelocity estimation from discrete position versus time data. IEEE Trans. Ind.Electron., 39(1):11–19.

Baluta, G. and Stefan Resmerita (1997). On the numerical speed control ofelectrical drive systems using stepping motors. In Proceedings of the IEEEInternational Conference on Intelligent Engineering Systems, INES’97, pages357–360, Budapest, Hungary.

Donciu, C. and Rapuano, S. (2004). A distributed measurement system for step-ping motors study. In Proceedings of the 21st IEEE Instrumentation and Mea-surement Technology Conference, IMTC’2004, volume 2, pages 996–999, Como,Italy.

Kavanagh, R. C. (2000). Improved digital tachometer with reduced sensitivity tosensor nonideality. IEEE Trans. Ind. Electron., 47(4):890–897.

Kolokolov, Y. V., Koschinsky, S. L., and Adjallah, K. H. (2002). Data acquisitionaspects in experimental research of electromechanical systems dynamics. IEEETrans. Instrum. Meas., 51(1):107–114.

Rahamam, M. F. and Poo, A. (1985). Optical encoders interfaces for digitalspeed and position control and systems considerations. Proceedings of AppliedMotion Control Conference, pages 176–180.

Page 167: Tesis_Gonzalez_Sergio.pdf

Capıtulo 8

Conclusiones y Trabajos Futuros

La presente tesis aporta nuevas metodologicas y tecnicas para el accionamiento

de maquinas de movimiento incremental, particularmente cuando las mismas son

accionadas a altas velocidades. A continuacion se expone las conclusiones de cada

tema abordado.

Se derivaron dos modelos matematicos para estos accionamientos segun la va-

riable de control. Un modelo con corrientes impuestas y otro modelo con tensiones

impuestas. Se logro un aporte totalmente general lo que permitio el desarrollo un

toolbox de Matlab/ Simulink.

Se realizo un estudio comparativo de los perfiles de velocidad. Se obtuvo una

forma generalizada de los mismos de forma de particularizarlos para la aplicacion

en sistemas de control de movimientos digitales. El estudio comparativo realizado

fue de caracter general, abarcando de forma sistematica los que son de utilidad

en sistemas de control de movimiento. Mediante este estudio, se pudo determinar

el perfil mas adecuado cuando los parametros como la distancia y el tiempo de

movimiento estan impuestos. En particular cuando se requiere un desplazamien-

to con una aceleracion maxima impuesta. Esto permitio especificar claramente

que perfil y con que parametros deben implementarse en sistemas de control de

150

Page 168: Tesis_Gonzalez_Sergio.pdf

Capıtulo 8. Conclusiones y Trabajos Futuros 151

movimiento cuando son accionados a muy alta velocidad. De esta forma, se pu-

do realizar desarrollos tecnologicos como los realizados para el Compact Linear

Collider (CLIC), donde 6 ejes son controlados simultaneamente a alta velocidad

con perfiles de velocidad.

Se desarrollaron algoritmos optimizados que no necesitan recursos de hardware

adicionales y permiten el accionamiento de maquinas de movimiento incremen-

tal a gran velocidad debido al mınimo tiempo computacional. Se desarrollaron

simulaciones y se las comparo con los resultados obtenidos implementando el

algoritmo en un DSP TMS320C30-50 de Texas Instruments y un motor de apli-

cacion industrial SLO–SYN KML093F14C5. Se logro un Tc = 6,4 us con el perfil

trapezoidal que es mas de 5 veces menor que los obtenidos previamente con los

algoritmos estandar. Con este tiempo de procesamiento se lograron velocidades

maximas de 15000 pps.

Los mismos algoritmos se adecuaron para implementarse en un arreglo logico

programable (ALP). Esto permitio que el algoritmo desarrollado pueda ejecutarse

mas rapidamente y por consiguiente demostrar sus capacidades de comandar a

muy alta velocidad. Se logro desarrollar un prototipo controlador basado en una

Xilinx FPGA XC4006-3 lo que demostro que el algoritmo es suficientemente com-

pacto y flexible para poder ser implementado en ALPs. Se logro un Tc = 200 ns

que es mas de 150 veces menor que los obtenidos con los algoritmos estandar. Con

este tiempo de procesamiento se lograron velocidades maximas de 62,5 rev / s que

en un motor de 400 p / rev es mas de 25000 pps. Debido a esto, se logro ademas

extender los resultados a multiplicidad de accionamientos con un solo sistema

inteligente.

Se diseno e implemento un sistema que permite medir de forma on-line la

evolucion dinamica de la posicion de maquinas rotativas. El mismo utiliza como

Page 169: Tesis_Gonzalez_Sergio.pdf

Capıtulo 8. Conclusiones y Trabajos Futuros 152

transductor un encoder optico de alta precision y una PC para procesar y visuali-

zar los datos generados. El sistema de medicion de alta precision y alta velocidad

fue posible gracias al desarrollo de una nueva tecnica de compresion de datos

en tiempo real. La misma logra reducir hasta cuatro veces los requerimientos de

memoria FIFO de doble entrada utilizada como buffer. El sistema desarrollado se

comunica con el host a traves del bus ISA (Industry Standard Architecture). Gra-

cias al algoritmo de compresion de datos desarrollado, el sistema puede funcionar

con cualquier sistema operativo moderno a pesar del gran perıodo de latencia que

los mismos poseen. Con el actual sistema de compresion, se logro adquirir hasta 4

ejes simultaneamente a maxima velocidad, cosa que no era posible anteriormente.

El error en las mediciones obtenidos se mantuvo bien por debajo del 1 % para

el rango de velocidades de las maquinas rotativas entre 0,072 rpm y 9000 rpm

usando un encoder de 1024 ppr.

8.1. Publicaciones realizadas como parte

de esta Tesis

Con la modelizacion de estas maquinas le logro un aporte totalmente general,

lo que permitio el desarrollo un toolbox de Matlab/ Simulink. Los archivos

pertenecientes a este trabajo, se hicieron publicos mediante el siguiente medio:

“Stepper Motor ToolBox for Matlabv1.0”, Math Works web site:

http://www.mathworks.com/matlabcentral/.

Los resultados del estudio comparativo de los perfiles de velocidad se plasma-

ron en el trabajo del congreso iberoamericano de control automatico:

Page 170: Tesis_Gonzalez_Sergio.pdf

Capıtulo 8. Conclusiones y Trabajos Futuros 153

Sergio Alejandro Gonzalez y Daniel Oscar Carrica, “Estudio comparativo de

perfiles de velocidad en accionamiento de maquinas rotativas”, XIV Congre-

so de la asociacion Chilena de Control Automatico, 23-27 de Octubre 2000,

Universidad del BIO-BIO, Concepcion, Chile.

Los resultados con los nuevas tecnicas algorıtmicas se plasmaron en los tra-

bajos que a continuacion se detallan:

Daniel Oscar Carrica, Sergio Alejandro Gonzalez y Mario Benedetti, “A No-

vel Algorithm for the commanding of High Speed Stepper Motors”, Journal of

Systems and Control Engineering, Proceedings of the Institution of Mechanical

Engineers Part I, Vol. 217, No. 14, August 2003, London, UK.

Daniel Oscar Carrica, Sergio Alejandro Gonzalez y Mario Benedetti, “A High

Speed Velocity Control Algorithm of Multiple Stepper Motors”, Mechatronics,

Vol. 14, No. 16, pp. 675-684, Elsevier Science Publishers, August 2004, Amster-

dam, The Netherlands.

Los resultados obtenidos con el nuevo algoritmos y su implementacion en un

arreglo logico programable (ALP) se volcaron en el siguiente trabajo:

Daniel Carrica, Marcos Funes y Sergio Alejandro Gonzalez, “Novel Stepper

Motor Controller Based on FPGA Hardware Implementation”, IEEE/ASME

Transactions on Mechatronics, Vol. 8, No. 1, March 2003, New York, USA.

Estos resultados tambien se plasmaron en los trabajos que a continuacion se

detallan:

Page 171: Tesis_Gonzalez_Sergio.pdf

Capıtulo 8. Conclusiones y Trabajos Futuros 154

Daniel O. Carrica, Sergio Alejandro Gonzalez y Marcos Funes “Nuevo sistema de

generacion de perfiles de velocidad basado en arreglos logicos programables”,

XVII Congreso Argentino de Control Automatico AADECA 2000, 11-13 de

Septiembre 2000, Bs.As., Argentina.

Sergio Alejandro Gonzalez, Marcos A. Funes y Daniel Carrica “FPGA based

stepper motor controller”, II Southern Conference on Programmable Logic,

SPL2006, March 8-10, 2006, Mar del Plata, Argentina.

Los resultados, diseno e implementacion de un sistema que permite medir y

registrar la evolucion dinamica de la posicion de maquinas rotativas se volcaron

en los Proceedings de los siguientes congresos:

Sergio Alejandro Gonzalez, Fernando Rodriguez-Betelu y D.O. Carrica, “Me-

dicion de la posicion angular con elevada resolucion en accionamientos de alta

dinamica”, IX Reunion de Trabajo en Procesamiento de la Informacion y Con-

trol, IX RPIC, Santa Fe, Septiembre de 2001.

Sergio Alejandro Gonzalez, Daniel Carrica y Mario Benedetti, “Medicion de la

posicion angular con elevada resolucion en accionamientos de alta dinamica”,

II Southern Conference on Programmable Logic, SPL2006, March 8-10, 2006,

Mar del Plata, Argentina.

8.2. Trabajo futuro

En las distintas tematicas abordadas, diversas e interesantes lıneas de inves-

tigacion se vislumbran, tanto desde el punto de vista tecnologico como por el

teorico.

Un aspecto tecnologico interesante serıa abordar los problemas asociados a la

contaminacion acustica generada por el driver del motor y por la secuencia de

Page 172: Tesis_Gonzalez_Sergio.pdf

Capıtulo 8. Conclusiones y Trabajos Futuros 155

accionamiento. A traves de las experiencias realizadas se detecto una importan-

te contaminacion sonora que es indeseable en los ambientes industriales donde

no solo se tiene un motor, sino que hay muchos de ellos para producir los dife-

rentes servo-mecanismos necesarios. Una solucion posible consistirıa en utilizar,

para la generacion del perfil de velocidad, algoritmos estocasticos, procesos tipo

markovianos, para desconcentrar el contenido armonico.

La experiencia en la optimizacion de tiempos de procesamiento es totalmente

general y podrıa ser aplicable a otras situaciones que involucren menor tiempo

de calculo. Una situacion de similar aplicacion podrıa ser el campo del procesa-

miento de senales. Concretamente, en la aplicacion en filtros iterativos, donde el

tiempo de reconocimiento y tratamiento de senales complejas es muy crıtico. Los

algoritmos de reduccion de tiempos de procesamiento podrıan ser de utilidad a

la hora de mejorar sistemas ya existentes. Para ello el objetivo es el desarrollo

de algoritmos aplicables a filtros ya que son de amplia utilizacion en todas las

ciencias de la ingenierıa.

Con respecto a los sistemas de adquisicion de movimientos, existen aspectos

tecnologicos que serıan de gran utilidad agregar al sistema. Uno de ellos es la

conexion con el host, la que actualmente se realiza a traves del bus ISA. Se podrıa

pensar en los buses PCI (Peripheral Component Interconnect) y particularmente

en su implementacion mas moderna, el PCI Express (PCIe), ver Bhatt (2005),

Kolbehdari et al. (2005). Por lo que sera deseable que la FPGA sea capaz de poder

contener la logica para conectarse al bus. Por otro lado, el banco de memoria

FIFO, ahora externo, es deseable que pueda ser incorporado dentro de la misma

FPGA. Tecnologıa actual de FPGAs, con gran capacitad en recursos logicos estan

hoy disponibles, por lo que la implementacion en FPGA tanto de la conexion con

el host basado en PCI y la incorporacion de los bancos FIFO es posible.

Page 173: Tesis_Gonzalez_Sergio.pdf

Capıtulo 8. Conclusiones y Trabajos Futuros 156

Referencias

Bhatt, A. V. (2005). Creating a third generation i/o interconnect. Technicalreport, Desktop Architecture Labs - Intel Corporation, Hillsboro, OR.

Kolbehdari, M., Harriman, D., Koker, A., and Saunders, S. K. B. (2005). Theemergence of pci express in the next generation of mobile platforms. IntelTechnology Journal, 9(1):21–33.

Wilen, A., Schade, J., and Thornburg, R. (2005). Introduction to pci express - ahardware and software developer’s guide. Technical report, Intel Corporation,Santa Clara, CA.

Page 174: Tesis_Gonzalez_Sergio.pdf

Apendice A

Publicaciones

A continuacion se presentan los trabajos publicados sobre la tematica. La

presentacion de los mismos en este apendice sigue una cronologıa de los trabajos

publicados entre el ano 2001 y el 2004.

157

Page 175: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 158

A high speed velocity control algorithm

of multiple stepper motors q

D.O. Carrica a,b, S.A. Gonzalez a,c,*, M. Benedetti a,b

a Universidad Nacional de Mar del Plata, Laboratorio de Instrumentacion y Control,

Mar del Plata B7608FDQ, Argentinab Consejo Nacional de Investigaciones Cientıficas y Tecnicas, Argentina

c Comision de Investigaciones Cientıficas, Argentina

Abstract

When the applications involve the simultaneous control of multiple stepper motors con-

ventional on-line control algorithms fail to produce a high speed step rate. An analysis of the

problem is presented and an algorithm [Proc IMechE Part I: J Systems and Control Engi-

neering 217 (2003) 359] is applied which does not have the speed restriction as the conventional

ones and does not require hardware timers. The developed algorithm was tested on a hardware

where several motors must be controlled simultaneously and comparative results were ob-

tained.

2004 Elsevier Ltd. All rights reserved.

Keywords: Motion control; Velocity profiles; Stepper motors; DSP; Computing time

1. Introduction

Several motion control applications in which a load must be moved precisely

involve high speed positioning of stepper motors. When multiple stepper motors

must be controlled, conventional control algorithms fail to produce a high speed step

rate. This problem arose in the simultaneous control and velocity profile generation

of up to six stepper motors in the alignment system of the CERN Compact Linear

Collider (CLIC) application [1–3].

qThis work was supported by the Universidad Nacional de Mar del Plata (ING-15/G064) and the

Agencia Nacional de Promocion Cientıfica y Tecnologica (BID 1201/OC-AR 2000).*Corresponding author. Address: Universidad Nacional de Mar del Plata, Laboratorio de

Instrumentacion y Control, Mar del Plata B7608FDQ, Argentina.

E-mail address: [email protected] (S.A. Gonzalez).

0957-4158/$ - see front matter 2004 Elsevier Ltd. All rights reserved.

doi:10.1016/j.mechatronics.2004.01.006

Mechatronics 14 (2004) 675–684

Page 176: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 159

The precise positioning of the motors require the use of velocity profiles, which

must be adjusted to a certain performance in speed and acceleration as well as the

dynamics of the system in order to guarantee motion without step-loss. The profiles

can be trapezoidal, sinusoidal or parabolic [4]. Within a general step motor control

system, there are two main functions: (1) the velocity profile generation block, (2) the

indexer block. After velocity profiles are generated, they have to be translated into

pulse intervals by the indexer. Each index pulse means that the motor must incre-

ment its rotor position in one step, hence the name indexer. There is no velocity

change in this block but a velocity-to-time translator. This block is unique to the

commanding of stepper motors since other types of motors can be commanded just

by applying the velocity profile in the form of current or voltage.

The velocity profile generation requires the following data:

• the type of profile, according to the application

• the angular displacement, in steps

• the maximum and minimum speed, in steps per second.

The implementation of the controller can be performed by two alternatives: off-

line or on-line schemes.

1.1. Off-line

In the off-line schemes the timing of the steps is calculated prior the motion profile

[5,6]. The velocity profile and the time space between pulses are calculated and then

stored in some kind of memory media, bundled into the hardware, i.e. ROM or even

hard drives.

A disadvantage of these schemes is its lack of flexibility. They do not allow real

time modification of the motion profile. They are calculated using parameters of an

specific load which can vary due to aging, environment temperature, etc. Therefore,

the obtained profiles are often outdated. Another important disadvantage is that

they require an important hardware volume, composed of memories and timers. This

volume is proportional to the quantity of motors and the extension and precision of

displacements. Therefore, if the application requires the precise motion of multiple

motors, the on-line profiles are preferred.

1.2. On-line

An intelligent system carries out the operation of calculating the index pulses

through a time lagging sequence generation algorithm. In Fig. 1 a flowchart of one

basic scheme can be seen. This flowchart contains two main blocks: VrðkÞ construc-

tion, where the velocity profile is actually developed, and DtðkÞ calculation, where the

time between the current step and the next is calculated. That is, VrðkÞ is the velocity

profile generation and DtðkÞ is the indexer. Often a common block is shared because a

single equation computes both the velocity profile and the DtðkÞ. For example, Eqs.

(1) and (2) express a typical algorithm for a trapezoidal profile [7].

676 D.O. Carrica et al. / Mechatronics 14 (2004) 675–684

Page 177: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 160

DtðkÞ ¼2

ffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffi

V 2max 2ðN k 1Þa

p

þffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffiffi

V 2max 2ðN 1Þa

p ð1Þ

VðkÞ ¼1 step

DtðkÞð2Þ

where VðkÞ is the resulting speed, Vmax is the maximum speed of the motor, N is the

total number of steps, a is the acceleration of the trapezoidal profile and DtðkÞ is the

time between the k-esim step, and the previous one, i.e. Eq. (3).

DtðkÞ ¼ tk tk1 ð3Þ

These schemes as well as the off-line make use of timers for obtaining the indexed

pulses. Since a timer per motor is required, this approach is discouraged in this

application where multiple motors have to be commanded by a single processor.

Another important disadvantage of conventional schemes is the impossibility of

reaching high velocities. This is due to the time Tc required to resolve on-line Eq. (1).

Tc imposes a practical limit to the speed. Moreover, not only Tc but the timer res-

olution, Tr, affects the maximum speed as in Eq. (4):

Fig. 1. On-line algorithms.

D.O. Carrica et al. / Mechatronics 14 (2004) 675–684 677

Page 178: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 161

Vmax ¼1

Tr þ Tcð4Þ

Current timer resolutions are small enough to discard the Tr in front of the Tc.

Therefore, Eq. (4) turns into Eq. (5).

Vmax ffi1

Tcð5Þ

This paper introduces a new algorithm which surpasses common algorithms

regarding high speed performance. The goal is to provide a better and more effective

step generation algorithm applied to the CLIC alignment control, which is a DSP

based implementation.

2. Proposed algorithm

As seen on the previous section, standard algorithms fail to reach high speeds,

mainly because the computing time, Tc, cannot be reduced to less than 150 ls with

current speed floating point devices. An alternative to the standard solution is to

avoid the computation of Eq. (1) which is the main factor imposing the speed limit.

The proposed algorithm can be explained as follows. In order to estimate the time

DtðkÞ one can assume that DtðkÞ is nk times Tc, since it is an accurate way of measuring

time without using timers. Therefore, the proposed algorithm has to do the following

functions in each iteration:

(1) Let nk ¼ 1.

(2) Assume DtðkÞ ¼ nk Tc.(3) Verify the previous assumption.

(4) If the verification is true, then execute the new step. If not, then increment nk and

repeat the process.

Point 2 refers to a simple multiplication of nk with Tc. That would be executing

Eq. (6).

DtðkÞ ¼ nk Tc ð6Þ

where nk is a positive integer number.

Point 3’s objective is to verify if Eq. (7) is true.

VrðkÞ ¼1

DtðkÞð7Þ

where VrðkÞ is the reference velocity at the k-esim step.

DtðkÞ is incremented as iterations are executed, in the same way 1Dtk

is decremented.

This explains the fact that it is necessary to wait for a number of iterations for

accomplishing Eq. (7).

678 D.O. Carrica et al. / Mechatronics 14 (2004) 675–684

Page 179: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 162

From Eq. (6) it can be seen that the resolution of DtðkÞ is Tc, due to this, the

equality in Eq. (7) cannot be possible. Thus, Eq. (7) becomes the comparison stated

in Eq. (8).

VrðkÞ P1

DtðkÞð8Þ

Eliminating the division in Eq. (8) is mandatory for reducing the computing time.

Therefore a simple contraction as in Eq. (9) is preferred.

VrðkÞ DtðkÞ P 1 ð9Þ

Point 4 of the process is a way of executing Eq. (10).

nk ¼ nk þ 1 ð10Þ

The new algorithm is based on Eqs. (6), (7), (9), and (10). Tc in Eq. (6) has the same

meaning as in Eq. (4), but with a considerable smaller magnitude, since the com-

putations here are very straightforward.

To conclude, the algorithm consists on a periodic accumulative sum until the

intended velocity is reached. Fig. 2 shows the flowchart of a system that implements

Eqs. (6), (7), (9) and (10). The velocity profiles block was previously introduced in

Fig. 1.

From Eq. (6), DtðkÞ resolution of the new algorithm is Tc. Since nk is an integer in

Eq. (7), a velocity quantization must be expected. In Fig. 3, intended and

Fig. 2. Proposed algorithm flowchart.

D.O. Carrica et al. / Mechatronics 14 (2004) 675–684 679

Page 180: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 163

commanded velocity profiles are displayed. Since the term DtðkÞ is a multiple of Tcand nk P 1, it turns out that the speed commanded has the following characteristics:

VkðnÞ ¼1

Dtk¼

1

nk Tc¼

Vmax; nk ¼ 1Vmax

2; nk ¼ 2

..

. ...

Vmax

K; nk ¼ K

8

>

>

>

>

<

>

>

>

>

:

ð11Þ

As an example, Fig. 3 shows a trapezoidal profile which starts at Vmin and has a

maximum Vmax. In order to keep track of the intended speed (in discontinuous line),

the system commands an initial value of nk ¼ 7. This results in an initial speed of

Vmax=7 which is the closest possible speed to the intended initial speed, Vmin. At t1, nkchanges to 6. As a consequence a higher speed of Vmax=6 occurs. At t2, nk ¼ 5 pro-

duces a commanded speed of Vmax=5. It then follows that at time t6 the commanding

speed is Vmax which equals the intended velocity profile.

The quantification effect is more remarkable at higher speeds when DtðkÞ times are

of the order of Tc. This effect is less important in the standard algorithms since it is

only produced by timer resolution Tr which is smaller. The effect can also be ex-

plained since intermediate speeds cannot take place between Vmax and Vmax=2. Neither

between Vmax=2 and Vmax=3, nor among Vmax=3 and Vmax=4, etc. Therefore, higherspeeds can only be reached by a low loop update time.

Fig. 3. Intended velocity profile.

680 D.O. Carrica et al. / Mechatronics 14 (2004) 675–684

Page 181: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 164

Until now, the indexer algorithm was developed. Following the trend to reduce

the computing time, a set of equations to generate the reference speed profile is

presented [8]. The idea is to arrange an algorithm general enough to develop any

kind of profile such as a trapezoidal, an S-curve, or a parabolic.

The instantaneous velocity function can be expressed by the Eq. (12).

vkðnÞ ¼ vkðn1Þþ akðnÞ Tc ð12Þ

where vkðnÞ is the current speed, vkðn1Þthe speed in the previous iteration, akðnÞ is the

current acceleration and Tc is the iteration time. The acceleration in Eq. (12) is a

variable whose expression can describe any profile. Acceleration akðnÞ can be ex-

pressed in such a general way to adopt a form of two equations, one to describe the

upward evolution and the other for downward evolution. The general case is shown

in Eqs. (13) and (14).

akðnÞup ¼ akðn1Þþ C1 þ C2 ðk þ nÞ ð13Þ

akðnÞdown ¼ akðn1Þþ C3 þ C4 n ð14Þ

The constants C1, C2, C3 and C4 change accordingly to the desired profile [9]. For

example C1 ¼ C2 ¼ C3 ¼ C4 ¼ 0 for a trapezoidal and C3 ¼ C4 ¼ 0 for a parabolic.

The null coefficients mean that the algorithm is shorter and then Tc is smaller.

Eqs. (6), (7), (9), (10) and (12)–(14) describe the complete algorithm covering both

the index and velocity profile generation. Time execution of the new algorithm, Tc, is

far lower than that of the standard ones expressed by the Eq. (1).

3. Experimental results

The alignment control system of the CERN CLIC, must regulate the position of

the girders and quadrupoles with a 10 lm precision, so that the trajectory of the

beam evolves aligned with the axial axis of cavities and quadrupoles, despite the

multiple perturbations that affect the position. The displacement of girders and

quadrupoles is performed through incremental motion motors. The girders that

support the cavities are moved by three motors, while the quadrupoles are moved by

five motors, all coupled by ball and socket joints, as schematically shown in Fig. 4. In

the four sections, there is a grand total of 70 motors along a distance of 5.6 m.

Stepper motors are suitable for precise positioning in CLIC since motors with small

step size are commonly available. The developed algorithm was tested on a proto-

type hardware where six motors must be controlled simultaneously, it has commu-

nication capacity with other hierarchic systems in order to produce the complete

motion profile through all the sections.

A a 50 ns per instruction floating point DSP [10] was used in this test hardware to

evaluate the impact of the Tc on triangular, parabolic and S-curved velocity profiles.

The experiences were carried out with Vmin ¼ 500 step/s, Vmax ¼ 18; 000 step/s and

amax ¼ 1500 step/s2.

D.O. Carrica et al. / Mechatronics 14 (2004) 675–684 681

Page 182: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 165

The stepper motor used in the experiments was a SLO-SYN KML093F14C5

whose characteristics are: 200 step/rev, holding torque Thold ¼ 816 N cm and a rotor

inertia 3.32 kg cm2. The position values were obtained through an optical incre-

mental encoder with a resolution of 500 pulses per revolution.

The results for a trapezoidal profile are appreciated in Fig. 5, for the parabolic

profile in Fig. 6 and for the S-curve based profile in Fig. 7.

The cycle time obtained for the three profiles is shown in Table 1. Table 1 and

Figs. 5–7 denote the impact of the type of profile on the implementation. Parabolic

and S-curve require a bigger Tc than the trapezoidal one. Thus, they present a more

evident velocity stepping problem. Parabolic and S-curve algorithm execution re-

quire more time than trapezoidal one because Eqs. (13) and (14) have less null

coefficients.

1 2 3 4 5 6 7 8 9 10 11

0

2000

4000

6000

8000

10000

12000

14000

16000

Velocity Profile

Ste

ps/s

Time, [s]

Fig. 5. Trapezoidal profile.

Fig. 4. Motor layout in the girders and in the quadrupoles.

682 D.O. Carrica et al. / Mechatronics 14 (2004) 675–684

Page 183: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 166

5 10 15 20 25 30 35 400

2000

4000

6000

8000

10000

12000

14000

16000

18000Velocity Profile

Ste

ps/s

Time, [s]

Fig. 6. Parabolic profile.

0 5 10 15 200

2000

4000

6000

8000

10000

12000

14000

16000

Velocity Profile

Ste

ps/s

Time, [s]

Fig. 7. S-curve profile.

Table 1

Comparative results

Profile Tc (ls)

Trapezoidal 6.3

Parabolic 8.7

S-curve 9.2

D.O. Carrica et al. / Mechatronics 14 (2004) 675–684 683

Page 184: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 167

4. Conclusions

An analysis of applications involving simultaneous control of multiple stepper

motors, where on-line control algorithms fail to produce a high speed step rate, is

presented. An algorithm [11] is applied which does not have the speed restriction as

the conventional ones and does not require hardware timers. The implementation

presented, yield computing time speeds up to 15 times smaller than typical on-line

algorithms. This advantage allows that no hardware timer resources are required,

thus the algorithm is suitable for the control of several motors with a single DSP,

such as in the alignment control system of CLIC, in which it has been implemented.

The tested algorithm, contrary to the typical algorithms, showed velocity quan-

tization effects in the profiles. The algorithm makes possible the use of a single DSP

to control up to 48 motors in current CERN CLIC project, thus, obtaining a more

economical controller.

References

[1] Coosemans W, Mainaud H. Pre-alignment of clic using the double-wire method. Technical Report

343, European Organization of Nuclear Research (CERN), CLIC-NOTE 343, July 1997.

[2] Braun H. Experimental results and technical research and development at CTFII. In: Proceedings of

the European Particle Accelerator Conference-EPAC’2000. Vienna, Austria, 2000. p. 48–52.

Available from: http://accelconf.web.cern.ch/accelconf/e00/.

[3] Poirier P. L’alignement dynamique submicrometrique de sections acceleratrices. Memoire de

soutenance du diplome de recherche specialisee en sciences, Universite Louis Pasteur de Strasbourg,

September 1991.

[4] Carrica D, Gonzalez S. Algoritmo eficiente para la generacion de perfiles de velocidad en el

accionamiento simultaneo de multiples motores paso a paso. In: ANALES VIII Reunion de Trabajo

en Procesamiento de la Informacion y Control, vol. 1. Facultad de Ingenieria, UNMdP, Mar del

Plata, Argentina, 1999. p. 118–22.

[5] Crook J. Low cost microprocessor based speed control. In: Kuo, P.B., editor, Proceedings of the

Thirteeth Annual Symposium, Incremental Motion Control System and Devices. Incremental Motion

Control System Society, Board of Trustees of the University of Illinois, Champaign, Illinois, 1984.

p. 25–30.

[6] Kang Z, Qu S. A new methodology for using single microprocessor to control DC stepper motors. In:

I. of Electrical & Electronics Engineers Staff, editor. Proceedings of the IEEE International

Conference on Industrial Technology. Piscataway, NJ, USA: IEEE Press; 1994. p. 543–5.

[7] Kenjo T, Sugawara A. Stepping motors and their microprocessor controls, monographs in electrical

and electronic engineering. Oxford, England: Oxford University Press; 1994.

[8] Petrovcic J, Strmcnik S. A microcomputer-based speed controller for lift drives. IEEE Trans Ind Appl

1988;24(3):487–98.

[9] Gonzalez SA, Carrica DO. Analisis de perfiles de velocidad en accionamientos de tipo incremental.

In: ANALES XIV Congreso Chileno de Control Automatico, vol. 3. Asociacion Chilena de Control

Automatico, Concepcion, Chile, 2000. p. 219–26.

[10] T. Instruments, TMS320C3x User’s Guide, Texas Instruments Inc., Houston, Texas, 1997.

SPRU031E revision L 2558539-9761.

[11] Carrica DO, Gonzalez SA, Benedetti M. A novel algorithm for controlling stepper motors at higher

speed. In: Proc IMechE Part I: J Systems and Control Engineering, vol. 217, 2003. p. 359–65.

684 D.O. Carrica et al. / Mechatronics 14 (2004) 675–684

Page 185: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 168

Page 186: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 169

Page 187: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 170

Page 188: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 171

Page 189: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 172

Page 190: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 173

Page 191: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 174

Page 192: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 175

120 IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003

Novel Stepper Motor Controller Based on FPGAHardware Implementation

Daniel Carrica, Senior Member, IEEE, Marcos A. Funes, and Sergio A. González, Member, IEEE

Abstract—This paper proposes a novel stepper motor controllerbased on field programable gate arrays, showing a remarkable per-formance. The system provides a combination between a novel al-gorithm and programmable logic to achieve both high speed andhigh precision on a compact hardware.

Index Terms—Field programable gate arrays (FPGA), motioncontrol, stepper motor.

I. INTRODUCTION

I N HIGH precision stepper motor applications, it is neces-sary to use motors with small steps whose size is imposed

by the required resolution. Another alternative is the techniqueof microstepping, where the motor step size is further reducedby means of control. As microsteps are related to very little dis-placements, a great quantity of microsteps are required to getthe total displacement. Total displacement should be executedin an acceptable time. As a consequence, the time between mi-crosteps should be reduced. A high-speed data transmission be-tween controller and driver is mandatory when indexing in mi-crostepping mode of operation.

Furthermore, open loop applications are much less expensivethan close loop ones due to encoders. If open loop is chosen,velocity profiles have to be used in order to avoid the step loseeffect.

A general system for the commanding of a stepper motor isshown in Fig. 1. There are three functions: 1) the velocity pro-file generation block; 2) the indexer; and 3) the power drivers.Blocks (1) and (2) are embedded in what we named controller.

After velocity profiles are generated, they have to be trans-lated into pulse intervals by the indexer. Each index pulsemeans that the motor must increment its rotor position in onestep/microstep, hence the name indexer. This block functionsas a velocity-to-time translator. This block is unique to thecommanding of incremental motion devices since other types

Manuscript received November 26, 2001; revised October 16, 2002. Recom-mended by Technical Editor K. Ohnishi. This work was supported in part by theUniversidad Nacional de Mar del Plata under Grant ING-15/G064 and in partby the Agencia Nacional de Promoción Científica y Tecnológica under GrantBID 1201/OC-AR 2000.

D. Carrica is with the Department of Electronics, National University of Mardel Plata, Mar del Plata, Argentina. He is also with He is also with the CentroAustral de Investigaciones Científicas (CADIC), Tierra del Fuego, Argentina.

M. A. Funes is with the Department of Electronics, National University ofMar del Plata, Mar del Plata, Argentina.

S.A. González is with the Laboratorio de Instrumentación y Control, De-partment of Electronics, National University of Mar del Plata, Mar del PlataArgentina. He is also with the Comision de Investigaciones Cientificas (CIC),Buenos Aires, Argentina (e-mail: [email protected]).

Digital Object Identifier 10.1109/TMECH.2003.809160

Fig. 1. Complete control system.

of motors can be commanded just by applying the velocityprofile in form of current or voltage [1], [2].

The implementation of the controller of Fig. 1 can be per-formed by two alternatives: off-line or on-line schemes.

A. Off-Line

In the off-line schemes the timing of the steps/microsteps iscalculated prior the movement [3], [4]. The velocity profile andthe time space between pulses are calculated and then storedin some kind of memory media bundled into the hardware, i.e.,ROM or even hard drives.

A disadvantage of these schemes is that they require an im-portant hardware volume, composed of memories and timers.This volume is proportional to the quantity of motors and theextension and precision of displacements.

B. On-Line

An intelligent system carries out the operation of calculatingthe index pulses through a time lagging sequence generation al-gorithm. In Fig. 2 a flowchart of one basic scheme can be seen.This flowchart contains two main blocks: construction,where the velocity profile is actually developed, and cal-culation, where the time between the current step and the next iscalculated. That is, is the velocity profile generation and

is the indexer of Fig. 1. Often a common block is sharedbecause a single equation computes both the velocity profile andthe . For example, (1) and (2) express a typical algorithmfor a trapezoidal profile [5].

(1)step

(2)

where is the resulting speed, is the maximum speedof the motor, is the total number of steps or microsteps,isthe acceleration of the trapezoidal profile and is the timeof the -th step.

1083-4435/03$17.00 © 2003 IEEE

Page 193: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 176

CARRICA et al.: NOVEL STEPPER MOTOR CONTROLLER BASED ON FPGA HARDWARE 121

Fig. 2. On-line algorithms.

These schemes as well as the off-line ones make use of timersfor obtaining the indexed pulses. Since it is necessary one timerper motor, this approach is often discouraged when multiple mo-tors have to be commanded by a single processor.

Another important disadvantage is the computing time, re-quired to compute (1). imposes a practical limit to the speed.Moreover, not only but the timer resolution, , affect themaximum speed as in (3)

(3)

Current timer resolutions are small enough to discard theat the equation. Therefore, (3) turns into (4).

(4)

Standard algorithms fail to reach high speeds, mainly becausethe computing time, . In order to resolve the goal is toprovide a new algorithm with a more effective step generationprocedure without timers.

II. PROPOSEDALGORITHM

The proposed algorithm can be explained as follows. In orderto estimate the time , it is assumed that is times

, since it is an accurate way of measuring time without usingtimers. Therefore, the proposed algorithm has to do the fol-lowing functions during each iteration:

1) Let

Fig. 3. Flow chart of the algorithm.

2) Assume

(5)

where is a positive integer number.3) Verify if assumed allows the wished . Thus, it

means

(6)

where is the reference velocity at theth step.4) If the verification is true, then execute the new step/mi-

crostep. If not, then increment and repeat the process. (points2, 3, and 4)

(7)

From (5) it can be seen that the resolution of is . Theequality in(6) is not possible because of this resolution. Equa-tion (6) becomes the comparison stated in(8)

(8)

Eliminating the division in (8) is mandatory for reducing theiteration time. Therefore a simple contraction as in (9) is pre-ferred

(9)

The new algorithm is based on (5), (7), and (9).in (5) hasthe same meaning as in (4), but with a considerable smaller mag-nitude, since the computations here are very straightforward. It

Page 194: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 177

122 IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003

Fig. 4. Intended velocity profile.

is experimentaly demonstrated that aten times less than inconventional algorithms is achieved.

To conclude, the algorithm consists basically on a periodicaccumulative sum until the intended velocity is reached. Fig. 3shows the flowchart of a system that implements (5), (7) and(9). The velocity profiles block was previously executed.

From (5), resolution of the new algorithm is sinceis an integer. resolution in the new algorithm arises to a

velocity quantization problem because velocity is the inverse of, (6). Since the term is a multiple of and ,

it turns out that the speed commanded has the following char-acteristics:

......

(10)

As an example, Fig. 4 shows a trapezoidal profile which startsat and has a maximum . In order to keep track of theintended speed (in discontinuous line), the system commands aninitial value of . This results in an initial speed ofwhich is the closest possible speed to the intended initial speed,

. At , changes to 6. As a consequence a higher speedof occurs. At , produces a commanded speedof . It then follows that at time the commanding speedis which equals the intended velocity profile.

The quantification effect is more remarkable at higher speedswhen times are smaller as . The effect can also be ex-plained since intermediate speeds cannot take place between

and , or between and , nor amongand , etc.

Fig. 5. FPGA based control system.

Therefore, an algorithm has been developed which requiresneither timers nor lookup tables and can work for much higherspeeds. It’s disadvantage is the quantification effect which de-pends on the magnitude of . With current DSP technology, aminimun s is obtainable. This magnitude producesa quantification level of 2000 steps at speeds arround 15 000steps/s, which shows the importance of the problem.

III. H ARDWARE IMPLEMENTATION

In order to reduce the computing time, a hardware imple-mentation is proposed. The algorithm presented in Section II issimple enough to be executed by a custom hardware. Hardwareimplementation permits multiple parallel tasks, thus, providingan effective way of implementing true parallelism which allowsa great reduction of computing time because operations such asthe reference profile generation, multipication and indexationcan be executed in separate blocks and can run independentlyones of the others.

Equations (5) and (9) are replaced by (11) . Although, thismeans no changes in the algorithm, it reduces the pair ofmultiplications to only one. This fact allows an efficient hard-ware implementation without performance demerit. Hardwareimplementation of (5) and (9) is presented in Fig. 5, wherethe block diagram of the controller is shown. The COUNTER,wich counts clock periods, represents the execution of (5).

The hardware implementation of (11) is carried out by theMULTIPLIER and the COMPARATOR

(11)

When the inequation is satisfied, a new step is commanded.The signal is then fed to the DRIVER INTERFACE, which com-mands the pulses to the driver of each motor phase. Fig. 5 showsa four phase motor.

The clock period of hardware implementation is equiva-lent to the computing time in the software execution of the algo-rithm of Section II. The clock period defines the time resolu-tion of the controller. As can be well reduced in hardware ap-

Page 195: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 178

CARRICA et al.: NOVEL STEPPER MOTOR CONTROLLER BASED ON FPGA HARDWARE 123

Fig. 6. Position and velocity profile with the FPGA based system.

proach, the quantizacion effect on the mechanical velocity willbe negligible.

Standard implementation of a multiplier is accomplish by acombinatorial structure. This approach is very good regardingthe time because it presents a minimum delay imposed bythe logic gates, but it involves a great number of logic resources,which increase proportionally with the multiplier word length.As an example, a 16 16 bits product requires the 90% of a10 000 logic gates FPGA [6], [7]. In order to overcome theFPGA area problem, a sequential arquitecture for the multiplieris proposed [8], [9]. This approach allows an effective area re-duction of 10 times, but with a greater, i.e., 16 clock pulsesfor a 16-bit word multiplier. However, with a 40 MHz clock,time is only 400 ns which remains neglicted for system perfor-mance. As a consequence, a sequential multiplier was adopted,which permited the implementation of the algorithm in a FPGAof 6000 logic gates.

A trapezoidal profile is generated, with several parameters,such as acceleration, minimum and maximum speed, and stepquantity. The controller decides how the profile must be basedon these parameters, and generates a reference profile to drivethe stepper motor.

As a conclusion, a new controller based on a novel algorithmimplemented by hardware was proposed. The new system pro-vides a good combination to achieve both high speed and highprecision motion on a compact hardware. Furthermore, this con-troller can easily drive full, half and micro-step mode applica-tions due to the flexibility and the reduced computing time withthe FPGA implementation.

IV. EXPERIMENTAL RESULTS

To evaluate the performance of the system, the developed al-gorithm was implemented in a Xilinx FPGA XC4006–3. Thisdevice can run at synchronous system clock rates up to 80 MHzand has a capacity 6000 logic gates. A hybrid stepping motorwas used in the experiments. Motor characteristics: 400 step/rev,inertial moment 1310 kg m , 10 N m. Noaditional load was connected.

Fig. 7. Velocity profile with the FPGA based system.

The position measures were obtained through an incre-mental optical encoder ELAP-E521 with a resolution of 1024pulses/rev whose inertial moment is 10 kg m . It wascoupled through an HELICAL-WA25 with an inertial momentof 10 kg m .

The position curve was obtained by reading the encodersignal with a high resolution timer. The position was off linederived to obtain the speed profile.

The muliplier works with a 40-MHz clock rate, which yielda multiplication time of 400 ns. ns was adopted, wichremains negligible in relation to the motor speed.

The stepper motor must develop a 12 000 step displacementfollowing a reference trapezoidal profile with charasteristics:

stepss, stepss and a max accel-eration stepss .

The resultant speed and position profiles can be seen in Fig. 6.The low time allows an almost continuous profile and veryhigh speeds, higher than those generated by standard softwarealgorithms. Due to the characteristic of the profile, the steppermotor passes through resonance area [5]. This effect can be ob-served at low speeds in the profiles.

Fig. 7 shows a complete profile obtained at high speeds withfull step. Note the continuity at all the effective speed range.

Fig. 8 shows a complete profile obtained for a microstepingapplication. The stepper motor used in this experiment wasa SLO-SYN KML093F14C5 whose characteristics are: 200step/rev, holding torque 816 N cm and a rotor inertia3.32 kg cm . The position values were obtained throughan optical incremental encoder with a resolution of 500pulses/rev. The microstep drive module used was an SLO-SYNMD808, configured to produce 2000 pulses/rev. As a con-sequence, the system must generate a high velocity profilewith stepss, stepss and a maxacceleration stepss . The time adopted forthe application was 400 ns in order to reduce the speed jumpsat to 1000 steps/s, so the speed jump remains under 5%of . This effect can be observed as a ripple component atthe top of the profile.

Page 196: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 179

124 IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003

Fig. 8. Velocity profile for microsteping application.

The system achieved very high speed that was unreachablewith standard algorithms executed by a processor. Furthermorethe new controller does not require the timers, wich are necesaryin conventional systems, and the processor was replaced by aFPGA of similar size and equivalent cost.

V. CONCLUSION

A novel algorithm with reduced quantity of operations wasintroduced. This algorithm implemented on FPGA allows a sub-stantial decrease of the equivalent processing time developed byclassic velocity controllers. As a consecuence, the stepper motorcan reach very high speeds never obtained with standard algo-rithm based systems.

Due to the system architecture, one FPGA can drive severalstepper motors simultaneously without increasing the procesingtime. It can drive three stepper motors with current 6000 gatesFPGAs. This advantage make the system very convenient sinceit allows the increase of the number of motors, simply using alarger FPGA.

REFERENCES

[1] B. K. Bose, Ed.,Modern Power Electronics. New York: IEEE Press,1992.

[2] J. V. Wyk, H. Skudelny, and A. Müller-Hellmann, “Power electronics,control of the electromechanical energy conversion process and someapplications,”Proc. Inst. Elect. Eng., vol. 133, no. 6, pp. 369–399, Nov.1986.

[3] J. Crook, “Low cost microprocessor based speed control ,” inProc. 13thAnnu. Symp. Incremental Motion Control System and Devices, P. B. Kuo,Ed., Champaign, IL, May 1984, pp. 25–30.

[4] Z. Kang and S. Qu, “A new methodology for using single micropro-cessor to control DC stepper motors,” inProc. IEEE Int. Conf. IndustrialTechnology, Dec. 1994, pp. 543–545.

[5] T. Kenjo and A. Sugawara, “Stepping motors and their micropro-cessor controls,” inSer. Monographs in Electrical and ElectronicEngineering. Oxford, U.K.: Oxford Univ. Press, 1994.

[6] The Programmable Logic Data Book, Xilinx, San Jose, CA, 1999.[7] (2000) Xilinx Core Generator Tools . Xilinx. [Online]. Available:

http://www.xilinx.com/products/logicore/coregen/index.htm[8] E. Boemo, E. Juárez, and J. Meneses, “Taxonomía de multiplicadores,”

in Proc. 8th DCIS Conf., 1993, pp. 185–190.[9] J. L. Hennessy and D. Patterson,Computer Architecture: A Quantitative

Approach. San Francisco, CA: Morgan Kaufmann, 1996.

Daniel Carrica (M’84–SM’00) was born in Do-lores, Argentina, in 1958. He received the engineerdegree from the National University of Mar del Plata(UNMdP), Mar del Plata, Argentina, in 1984 andthe M.Sc. degree in electronics from the UniversidadPolitécnica de Madrid, Madrid, Spain, in 1992.

In 1984, he joined the Department of Electronics,National University of Mar del Plata (UNMdP), asa Research Assistant. From 1990 to 1991, he was anAssociate Scientist at the European Organization forNuclear Research (CERN), Geneva, Switzerland.

From 1994 to 1996, he was Head of the Department of Electronics, UNMdPwhere he is currently an Associate Professor. He is also with the Centro Australde Investigaciones Científicas (CADIC), Tierra del Fuego, Argentina. Hiscurrent research interests include motion control and power electronics.

Professor Carrica is a Vice President of the Joint Chapter of Argentina IEEESection.

Marcos A. Funes was born in Mar del Plata,Argentina in 1974. In 1999, he received his degreein electronic engineering from the UniversidadNacional de Mar del Plata (UNMdP), Argentina andjoined the Laboratorio de Instrumentación y Control,(UNMdP) as research assistant.

Since 2000, he is Assistant Professor and is cur-rently working toward his Ph.D degree at UNMdP.His current research interests include high densityprogrammable logic devices and digital signalprocessing.

Sergio A. González(M’01) was born in Mar delPlata, Argentina, in 1972. He obtained the electronicengineering degree from the National University ofMar del Plata (UNMdP), Mar del Plata, Argentina,in 1999, where he is currently working toward thePh.D. degree.

Since 1999, he has been an Assistant Professorof control systems at the School of Engineering,UNMdP. Currently, he is a Research Assistant at theLaboratorio de Instrumentación y Control, UNMdP.His research interests include hardware design,

digital signal processing, motion control and electromechanical systemsdynamics.

Mr. González is a Member of the International Federation of Automatic Con-trol.

Page 197: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 180

!"#$ %

&'( )*+', -./

&'( *

! " # $ %

&

' ' !" #"" # # "" # "$" #"# %& '( ) "" " *" + " " +", !" # $&, ( # # #, " #" #+", # +, $"## )" # "& - # $ " $ +" # '( ) ""#"

" # # +", "#""% * # ", # "" "# ,+" " "$ #+!" +&" ." " # # +"&" # / # " " "&, # ' # +", 01# 2"" 34567 0" 34547 08$1 9:::7

+" # #' ."#" #+;"#" 0< "= # > 34497 + &#" ) ( ", "%# # +" #"# "" " # "&$" " ' ", +"% " ( "+# 1 " "" ."#" $! "%# +", ' +# #'$% ' 0$"## , 7 &+ #" '" ."

: %*" %##" +" $## " #> # 2 ) +" " # 2"&", - ) ", 02" # >"#!,", "" # 2" 5:9?&7 &

3@ >."#" # +;"#"

."#" # +;"#" +" ( #" # "# # $. # "#" # +" # +;"#" "" +# $ - 3 ""# # ) " " #" # +" ##" +# "% $", # +", , # +"

%#" ( " #+"$" "#" A" " # +" ' ! # % #, # " +" # "# 2" "" " $ +"+"" $"&## # ", ) ( ## ( . " +" +" # " +## #" # "B # &

C" ( $" " #" +"$" +" "# #) ## ( $"## # '" #% +! # #( #" # ( "# "" + ( " +"#! "% ) +" " " +.## # ",

2 "* " #" +" ( " # " + # +" #&+" &/" # " + ," " #" # #" #" $&$ +" '( # #' " #" #"" # "& + &#, # +", ) $, " +,# " # "" # "$" "& +" #" # #,( "+ . ( #! ## #" +#" ( "+" #&

IX Reunión de Trabajo en Procesamiento de la Información y Control - 12 al 14 de setiembre de 2001 - Santa Fe

173

Page 198: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 181

174

, " $# +, "" # #'

'' # #, # +, # ."#" # +;"#" ! "#"# + # 1" # +" +" #" D" # "# @

037#"# A" # +" # "* #" #+"

#" (@

097

"

0E7

+" " "

0F7

" $" # ."#" ' "#" +"@

067"##" 0F7 067 "%@

0G7 , 0G7 +# "%$ ( "

'" #" $"## ' 2 # " #% # ) ( ' #&#" +" +, ## #, # +",

, 0G7 +# % # @

0H7#"# + ' #+" ( $; "#

2" " " ## $"## ' ( + # " #% # "%$ %. ( ## ( $"###) +, *"

" # $"## %* #"# " &+" # " +" # "# ) $#" A" # % # +% ( # &#" %. ) # +" '" +" ' ##" +"@

057+" " "

047

" A" # % # "#" #% @ 03:7

%#" ## # #" +"##" +"" "# " " " & + # #, # " +" ) +"#"# #" " # + - " +" 0 + +7 " +### " +" # +"

2 ( " " $&#" +.## # #" /" # %I #% " - # + ( " "% ) +.## # ", # +" ( # +"#" # #+"&$" +##" # +, "" +"#" +"+" 2 "+#" J#"= 46 & +" # ( +" ( ## ( A +##"# +, 1 ( # $&" # ;+ 0# # % 34457 + !, # 2#

## ( $"## %. )" ## # ", ( # " "#" +## ;& # +# + # @

0337

, 0337 #%#" ( #% " ," 1 # + " +##"# +, , 0337 ### ", # +"+"" $"&## # * 2" *+" + $"## ' # + 0!#" "## ++7 /" ;" # #% # +% # % /" +"& '#" # " +" " ( )"$ "# . + #, - # # /" # " "# . # "+, # #" +"

. # "+, #", % "+" # ( ## ( $"## "#" " +" # "B # "" +# "%$ '-" # - 9 2"" " % ' -$" # +% #( + +;"#" " 1%' %#" ) ' " +" " ( ' ## ) +# #1#" ,#" # "#" ) ", A ' "# " % "-$" 1%' % ##

# +"#" " +&% # # % +"+" ( +"#"#( +% ( " %#"# A" # +% ( " "&, A ## 2 ( +"#" +! # " # #" "#" ' " #" % ( #(

IX Reunión de Trabajo en Procesamiento de la Información y Control - 12 al 14 de setiembre de 2001 - Santa Fe

Page 199: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 182

175

!

9@ #, # A" # +" " &" # $"##

"-, "# # #+"&$" "#" 2" " " +"#" #%' - +% # %

- E # %"( # +"+" " # % # 2 ( ! + +" " #" ) 1&%" " '- "#" # # % ( + ."#" # +;"#" & ( #" # "" # ( # $" +" # "# "#" # "&#" #" " # #+!" #"#-#" # 1" # +% # " %## # /" # +% A "%" # ) %+ ( ## " " + " %; " # "" # 1%, # " &" # '#" +"#' #+!") " % " -$" ( " "&, A ' #" " (&##" +" " % ## ( '#1#" #" $ +% # "# ""%%

E@ %"( #

" +% # % # " " $ +% # &"# " ", A ) +% # ""#" # % # +" "

#" # +% # "" + # +"&#" (. "%, # +% ' "" #" " " #" # % " #"" ( # "%" # +%# "# " # ## # % "" +#$ % 3

"%" 2% # "": 9F ::::3 39 39 :::39 39 5 ::3:E 39 ::33F 5 5 5 :3::6 5 5 G :3:3G 5 39 :33:H 5 5 :3335 5 G 5 3:::4 5 G G 3::33: G G G G 3:3:33 G G G 3:3339 G G 5 33::3E G 5 5 33:33F G 5 G 333:36 G G 3333

% 3@ "" # "+,2 " ", # #"" "

"%" +"% +% # ) % ) #" ; #"## # " +- # $"## #"( ) +"%## # " " & +% "# "+" %." " ( +# " +"#* #"&## " " # $"##

" ( # "+, # #" " $", # +", " 1 " $ +(/"

#" ( ! ," % # " % #&+"% # " % % " " +% # #"" ( + #"#-, % # #, # ", ) " A&" % # " "" ##" " ##( $" "" " ' $; "" % # #" ) ( #" +"#! "&+, # #" " 1%' %" #" # "#%#" ( $" # ", +"#& $"## %* +" " ( " #" #"' # %

" +"" ) #"+, # "#" " " ;#" # %I +" +"&#" ) #" " ++ # 2 +"" # #, "+ #" " #"#" " ";#" $; " = +%# #(# ) # 2 "$" #" " ", "+# # "#) + +"# ! "+, . "" " ) +"# +", " $"##

IX Reunión de Trabajo en Procesamiento de la Información y Control - 12 al 14 de setiembre de 2001 - Santa Fe

Page 200: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 183

176

" #"+ ", "&)#" $" " # " #"

2 ! #"+, #- # "%*" # ( " # # $% ( +# &## ," +" "%*" # ) # " ( * $% ) "" #" " +" ++ ) "" "%*&" - F "%$ # # D*" #+"" # #"+,

#" #" " ( #&% + ", " "##" "%*" # ( "" % 9F 9H "%.#" +% # #"#-&, ) # A $" # % #"" ) #- (. "-, # #" 1) +%#(# # ## # " ) A"# % ( " "+" "-, & $% ) %. $"

$! #-# "-, # " #" + "! +"" # #"+, +"&+ #1" #- ## # % (" + #" #" +% #&(# " " +#" ' " " % " -$" # (' "# +" A" 1# "" :G:5 : ) : ( # G 5 39 ) 9F % +&$

%#" " ## # % ( " #" " + +#" ' "% "% A # +"" + +" #" ! #+!" # F % 1 #1 "% $% + +"# + " #"

''' " +, # #, +! # &# # "# ## 1 0 + 1 + " "# # ++7 " 2 + " &+-, !, "B # 0 7) "#" # %

!, 2 KF::G # K + %& , # ( + #, #+;"#" "" # " # " #" ) #, # % "" - 6 %" # " +&#" + # " #+"$" # # $ H9:G # %

2 $- # # #" &" / # "# " #" # " # <= 2B# EE39: ) &!" " #" #" "+'#"" " &#, # " +" "#" <= 2B#<26E:5 " #" # #" & - G #"# "%$ ( # +;"#" ##" 0!" ""7 ) #(&

F@ # D*" # +"" # #"&+, # #"

#" 07 "! + # " #" ( 1 #

" $" $" " "&" - H + " #$" ' # " ) !" "" +", # #" "# # "

' +-# # #, +;"#" # " +" " "#" $#" ) " " # #, # " ( ; +"+" #

') % #/, +, ( + ## " "& $", #' # +",# '( "$ !#" "" #" "# ,+" ) 2 + +" ) $! "#" #" # #, # +&, ) $"## +"% !,

IX Reunión de Trabajo en Procesamiento de la Información y Control - 12 al 14 de setiembre de 2001 - Santa Fe

Page 201: Tesis_Gonzalez_Sergio.pdf

Apendice A. Publicaciones 184

177

6@ # #,

# . # "+, # #" +" ( " # 1 " $ +## #" # " !# ""%I ) " (" # " # 1" " ; ( %* +" +"%*" "+$" +" J#"= 46 #"# +" # ) # ) # #+, 2 #% ! " #" + % +" #%*" # + " # $"## # '( "$ + ) + #" "# # ++

"*+*"*,%'-" L " <1 2 "

1" =1 >"""M ... /& ' ' ./ 012 33:FN33:H 034547

# # % L"=&)> " = I&1&1 + )&M L2"# " 1 " "&+ > " M ++ 3EHN3F3 "& "+ > "" " " 034457

8$1 L+"$# 1" J1## $) " " "#)M .../ - . 34 03254:N54H 09:::7

1 > # 2"" L+ "# & " +# # 2"" "" #) "#"M 0 %,, 0 ++ 3HGN35: 034567

< "= # > > L) " "1 " C") " " 2"" $ M ... / . .5 062 33N34 034497

"

!

#$%&'!

()*

07

"

!

#$%&'!

()*

0%7 G@ >#" # +;"#"

+

,

-./

0

#$%&'!

H@ " $" # #"

IX Reunión de Trabajo en Procesamiento de la Información y Control - 12 al 14 de setiembre de 2001 - Santa Fe

Page 202: Tesis_Gonzalez_Sergio.pdf

Apendice B

Hardware para el prototipo

experimental

Se desarrollo un prototipo experimental donde se probaron las distintas tecni-

cas tanto para DSP como para FPGA. El sistema utilizado en las pruebas di-

senado DSP y FPGA es parte del sistema de supervision de fallas (ESDF) apli-

cadas al control de posicion de un acelerador de partıculas (CLIC). El mismo

fue desarrollado entre 1998 y 1999 para el CERN. Se utilizo este sistema como

plataforma ya que convenıa su utilizacion para la experimentacion debido a que

tenia la tecnologıa requerida. Ademas de esto, al haber desarrollado totalmente

el hardware se contaba con toda la informacion necesaria para modificarlo en

funcion a los requerimientos. De manera de poder explicar los cambios hechos

y los algoritmos utilizados se presenta el marco del proyecto CLIC en el que el

hardware funciona.

185

Page 203: Tesis_Gonzalez_Sergio.pdf

Apendice B. Hardware para el prototipo experimental 186

B.1. Proyecto CLIC

El CLIC (Compact Linear Collider) es un acelerador lineal de ultima tecno-

logıa que actualmente se encuentra en etapa de investigacion en el CERN (Orga-

nizacion Europea de Investigacion Nuclear). Se preve la finalizacion completa de

su construccion en el ano 2010, cuando se constituira en el acelerador de mayor

energıa del mundo. La principal ventaja del CLIC es la concentracion del haz de

partıculas en una seccion mucho mas reducida que en otros aceleradores (Bos-

sart et al., 1994). Esto permite obtener partıculas de mayor energıa. Pero como

contrapartida existen serias exigencias en cuanto a la alineacion del acelerador

respecto de su haz de partıculas ya que se especifica una desviacion maxima de

10 micrones a lo largo de los 4000 m de longitud del acelerador (Coosemans and

Mainaud, 1997). Para lograr tal especificacion es necesario un sistema de control

de posicion capaz de compensar perturbaciones con frecuencias da hasta 1Hz

(Poirier, 1991).

Hasta ahora se ha experimentado el principio funcional del CLIC en el CTF2

(CLIC Test Facilities 2), cuya longitud es de 5,6 m. El sistema de alineacion del

CTF2 se fundamenta en un conjunto de sensores que detectan la posicion de

las cavidades del haz. Luego de un adecuado procesamiento de la informacion se

obtiene el movimiento que se debe operar sobre los elementos del acelerador a

traves de un conjunto de motores paso a paso (Carrica et al., 1999).

En la Fig. B.1 se muestra el sistema de control de alineacion del CTF2.

Se observan tres bloques funcionales que estan conectados a su vez a un siste-

ma mas jerarquico a traves de un bus standard VME: a) Subsistema de Control,

b) Subsistema de Adquisicion, c) Subsistema de Accionamiento.

La electronica de alineacion del CTF2 incluye 34 placas. Este conjunto se

encarga de adquirir y procesar 134 senales y de accionar 70 motores paso a paso

Page 204: Tesis_Gonzalez_Sergio.pdf

Apendice B. Hardware para el prototipo experimental 187

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

VME BUS

Subsistema deaccionamiento

Subsistema decontrol

Subsistema deadquisición

Figura B.1: Diagrama funcional del sistema de alineacion.

utilizando perfiles de velocidad (Carrica et al., 1999).

La elevada cantidad de motores, sensores y placas electricas involucradas en

el CTF2 se multiplicara 700 veces en la version definitiva del acelerador. Ademas,

como consecuencia de la cantidad de motores y sensores involucrados, existira una

gran cantidad de cables y conexiones. Todo esto traera aparejado dificultades en

la instalacion, mantenimiento y reparacion del sistema.

A fin de reducir tales dificultades se propuso la utilizacion de una Estacion de

Supervision y Deteccion de Fallas (ESDF) capaz de verificar en forma local el fun-

cionamiento de los distintos componentes del CLIC, sean estos sensores, motores

o las distintas placas electronicas que existen en el Subsistema de accionamiento

y el Subsistema de adquisicion.

B.2. Desarrollo de una ESDF flexible

Se propuso una ESDF flexible, modular y amigable, basada en PC. La ESDF

consta ademas de una interfase PC-Subsistemas que funciona como nodo de co-

municacion y como unidad de procesamiento rapida. En la Fig. 2 se muestra su

arquitectura general.

Page 205: Tesis_Gonzalez_Sergio.pdf

Apendice B. Hardware para el prototipo experimental 188

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Subsistema deaccionamiento

PC

Interfaz PC-subsistema

Subsistema deadquisición

Figura B.2: Arquitectura general de la ESDF.

En la Fig. B.3 se observa el diagrama en bloques funcionales de la Interfase

PC-Subsistemas.

El sistema esta basado en un DSP. El mismo se comunica con la PC a traves

del puerto serie RS-232. Para realizar la comunicacion con la PC se utiliza pri-

meramente una conversion de niveles que, a partir de los +/-12V del estandar

RS-232, obtiene los niveles TTL utilizados por el sistema. Luego existe el modulo

de transformacion de la comunicacion serie sincronica RS-232 a una comunicacion

paralelo de 16 lıneas de datos. Los datos transformados son almacenados en un

registro accesible desde el DSP.

El DSP tambien se comunica en forma serie pero a traves de fibra optica con los

Subsistemas de Adquisicion y Accionamiento. La comunicacion serie con ambos

subsistieras involucra un bloque de conversion de formatos, tanto para transmision

como para recepcion ası como un multiplexado de las lıneas de comunicacion

serie dado que el DSP posee un solo puerto serial. Finalmente existen bloques de

transformacion de senales electricas en opticas para la transmision y opticas en

electricas para la recepcion.

Page 206: Tesis_Gonzalez_Sergio.pdf

Apendice B. Hardware para el prototipo experimental 189

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

RS-232Paralelo

TransceiverTTL 12

TransmisorSerie

TransmisorSerie

EEPROM

DSP

FPGA

FO

FO

FO

FO

Figura B.3: Diagrama en bloques funcionales de la Interfase PC-Subsistemas.

A partir de los datos provenientes de la PC, el DSP ejecuta los correspondien-

tes comandos o funciones. La mayorıa de las funciones involucran adquisicion de

sensores y o movimiento de motores. Gracias al uso del DSP, la ESDF posee una

velocidad de procesamiento suficientemente rapida que hace posible el acciona-

miento simultaneo de los 70 motores como ası tambien la adquisicion de los 134

sensores.

A fin de obtener un sistema modular, compacto, flexible y programable se ha

utilizado tecnologıa FPGA (Field Programmable Gate Array). Todos los bloque

funcionales mencionados, excepto el convertidor de niveles +/-12V a TTL y los

convertidores de senales opticas en electricas, son implementados en una FPGA

XC4006E de XILINX. En cuanto al DSP se utiliza el TMS320C31 de TEXAS que

es de punto flotante de 24-bits de palabra y 50 ns de tiempo de procesamiento

por instruccion.

Page 207: Tesis_Gonzalez_Sergio.pdf

Apendice B. Hardware para el prototipo experimental 190

En la Fig. B.4 se observa el circuito impreso (PCB, Printed Circuit Board) de

la interfase PC-Sistemas de la ESDF.

Page 208: Tesis_Gonzalez_Sergio.pdf

Apendice B. Hardware para el prototipo experimental 191

Conectores de FibraÓptica para

comunicación seriecon sub-sistema de

accionamiento

Conectores de FibraÓptica para

comunicación seriecon sub-sistema de

adquisición

FPGA

DSP

Conector DB-25 paracomunicación serie

RS-232

Figura B.4: PCB de la ESDF.

Page 209: Tesis_Gonzalez_Sergio.pdf

Apendice B. Hardware para el prototipo experimental 192

B.3. Conclusiones

Se lograron las siguientes caracterısticas de la ESDF:

Comunicacion a traves de fibra optica con los sistemas de adquisicion de

sensores y de accionamiento de motores.

Acceso a un grupo de sensores de hasta 32 grupos de 20 canales, es decir

640 sensores.

Parametrizacion de los perfiles trapezoidales de velocidad de los acciona-

mientos.

Accionamiento de un motor o de un grupo de 6 motores seleccionado entre

32 grupos, es decir 192 motores. El accionamiento puede definirse en mi-

crones o en pasos, en ambos sentidos. O hasta lımites de fin de carrera o

hasta el cero mecanico. Las velocidades logradas son de hasta 10000 pasos/s

sin perdida de pasos gracias a la aplicacion de algoritmos eficientes para la

generacion de perfiles de velocidad de velocidad.

Accionamiento de un motor o de un grupo de 6 motores seleccionado entre

32 grupos, es decir 192 motores. El accionamiento puede definirse en mi-

crones o en pasos, en ambos sentidos. O hasta limites de fin de carrera o

hasta el cero mecanico. Las velocidades logradas son de hasta 10000 pasos/s

sin perdida de pasos gracias a la aplicacion de algoritmos eficientes para la

generacion de perfiles de velocidad de velocidad.

Lectura del estado de cualquier motor.

Comunicacion con la PC mediante el port serie con velocidad de transmision

de datos seleccionable entre 9600, 19.200, 38.400 o 115.200 baudios.

Page 210: Tesis_Gonzalez_Sergio.pdf

Apendice B. Hardware para el prototipo experimental 193

Implementacion del hardware mediante FPGA (Field Programmable Gate

Array).

Utilizacion de tecnologıa DSP a fin de ejecutar el procesamiento matematico

en tiempo real, ası como la decodificacion de las instrucciones y datos que

imponen una exigente velocidad.

Page 211: Tesis_Gonzalez_Sergio.pdf

Apendice B. Hardware para el prototipo experimental 194

Referencias

Bossart, R., Braun, H., Chautard, F., Comunian, M., Delahaye, J., J.C.Godot,Kamber, I., Madsen, J., Rinolfi, L., Schreiber, S., Suberlucq, G., Wilson, I., andWuensch, W. (1994). Performances obtained with the cern linear collider testfacility. In Proc. European Particle Accelerator Conference-EPAC’94, pages680–682, London, UK.

Carrica, D. O., Benedetti, M., and Gonnet, G. (1999). Electronica de alta per-formance para el control de alineacion de un acelerador lineal de partıculas.In ANALES VIII Reunion de Trabajo en Procesamiento de la Informacion yControl, RPIC’99, volume 1, pages 57–64, Mar del Plata, Argentina.

Coosemans, W. and Mainaud, H. (1997). Pre-alignment of clic using the double-wire method. Technical Report 343, European Organization of Nuclear Re-search (CERN). CLIC-NOTE 343.

Poirier, P. (1991). L’alignement dynamique submicrometrique de sections ac-celeratrices. Memoire de soutenance du diplome de recherche specialisee ensciences, Universite Louis Pasteur de Strasbourg.

Page 212: Tesis_Gonzalez_Sergio.pdf

Apendice C

Software para el prototipo

experimental

Existe un problema adicional en la ESDF respecto al control de los acciona-

mientos. La resolucion en el movimiento de los motores es de 0,1 um. Teniendo

en cuenta desplazamientos maximos de 4 mm, esto implica desplazamientos de

hasta 40000 pasos. Dado que los motores paso a paso deben accionarse siguiendo

perfiles de velocidad, la gran cantidad de pasos inhibe la posibilidad de operar con

perfiles (de velocidad) off-line, ya que estos requerirıan una exagerada cantidad

de memoria. La alternativa de los perfiles on-line presenta el problema de que los

motores deben desplazarse a velocidades de hasta 5000 pps y deben hacerlo en

forma simultanea en grupos de a seis. En esta condicion la generacion de perfiles

en linea en forma digital se ve perturbada por el tiempo de procesamiento.

A fin de resolver esta dificultad, el software del DSP fue desarrollado en len-

guaje de maquina con el objeto optimizar los tiempos de procesamiento. Adicio-

nalmente se utilizaron tecnicas algorıtmicas mas eficientes que las convencionales

a fin de reducir aun mas los tiempos de procesamiento en la generacion de los

perfiles on-line (Carrica and Gonzalez, 1999).

195

Page 213: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 196

En funcion a los requerimientos se decidio utilizar el DSP TMS320C31 de

Texas Instruments. Para comprender los programadas implementados y los dia-

gramas de flujo de los mismos es necesario hacer una introduccion previa al DSP

utilizado.

C.1. Caracterısticas del DSP TMS320C31

El DSP TMS320C31 es un procesador digital de senales de 32 bits de punto

flotante para aplicaciones de proposito general. Este DSP tiene 32-bits en el bus

de datos y 24-bits en el bus de direcciones. Funciona con una frecuencia de reloj

de 30 MHz, al dividir internamente la frecuencia del oscilador externo de 60 MHz

en un factor de dos. Tiene un tiempo ciclo-instruccion de 40 nanosegundos y una

capacidad de procesamiento efectiva de 25 MIPS.

Debido a que el sistema debe conectarse a un bus de control de datos en forma

serial y realizar el control de multiples motores se decidio proveer a la placa de una

FPGA. El C31 tiene la misma velocidad en el CPU que todos los otros miembros

de la generacion, pero tiene la diferencia que ofrece un conjunto diferente de

perifericos que le permiten tener una excelente relacion precio/desempeno. El

C31 ofrece un menor costo que el C30 removiendo el bus de expansion y uno de

los puertos seriales ası como reemplazando la memoria interna ROM de 4 KWords

de 32 bits por una memoria boot ROM. El menor costo por placa y su velocidad

hizo fueron las claves para su seleccion. Otras caracterısticas importantes del

TMS320C31, son las siguientes (Texas Instruments, 1997):

Tiene tiempos de ciclo-instruccion de 50, 40 y hasta 33 nanosegundos.

Tiene un mapa de 16 Megawords para direccionamiento externo.

Tiene una boot ROM interna.

Page 214: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 197

Posee DMA(Direct Memory Address) internamente.

Soporta operaciones de multiplicacion y acumulacion en el mismo ciclo.

Contiene 64 Words de memoria cache.

Contiene dos timers de 32 bits.

Tiene dos modos de bajo consumo de energıa.

Tiene un puerto serial.

El TMS320C3x tiene una arquitectura de cpu basada en registros, como se

observa en la figura C.1. La CPU consta de los siguientes componentes: multi-

plicador de enteros/punto flotante, ALU, shifter barrer de 32 bit (usado para

desplazamientos de hasta 32 bits en un ciclo simple de maquina), buses internos,

registros auxiliares de las unidades aritmeticas y el CPU file register que es un

conjunto de 28 registros de proposito general que pueden ser usados tanto por

el multiplicador como por la ALU. Ademas el DSP posee una cache de progra-

ma, memorias internas de acceso dual, un canal DMA que soporta entrada/salida

concurrente y un ciclo de maquina corto. Una tabla con todos los registros que

este DSP contiene puede verse en C.1 (Texas Instruments, 1986).

El TMS320C3X puede ejecutar en paralelo operaciones de multiplicacion y

operaciones de la ALU en un solo ciclo de maquina, tanto sobre enteros como

sobre punto flotante. Ademas, los buses separados de programa, datos y DMA

permiten a los programas realizar en paralelo busquedas, accesos a datos y ac-

cesos a DMA. El tiempo de ciclo de 40 ns permite ejecutar operaciones a una

performance promedio de hasta 60 millones de instrucciones de punto flotante

por segundo (MIPFS) y de 30 millones de instrucciones por segundo (MIPS).

Page 215: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 198

El espacio total de memoria disponible del TMS32C3x es de 16 millones de

palabras de 32 bits. Programas, datos y el espacio de entrada/salida estan inclui-

dos en esos 16 millones. Cada bloque de RAM y ROM es capaz de soportar dos

accesos de CPU en un ciclo simple de maquina.

24

BootLoader

Cache(64 y 32)

RAMBlock 0

(1K y 32)

RAMBlock 1

(1K y 32)

RDY

HOLD

HOLDA

STRB

R/W

D31±D0

A23±A0

RESET

IR

PCCPU1

REG1

REG2

MUX

40

32

32

32

32

32

32

32

24

24

24

24

BKARAU0ARAU1

DISP0, IR0, IR1

Extended-PrecisionRegisters(R7±R0)

AuxiliaryRegisters

(AR0±AR7)

OtherRegisters

(12)

40

40

40

40

Multiplier

32-BitBarrelShifter

ALU

DMA Controller

Global-ControlRegister

Source-AddressRegister

Destination-AddressRegister

Serial Port 0

Serial-Port-ControlRegister

Receive/Transmit(R/X) Timer Register

Data-TransmitRegister

Data-ReceiveRegister

FSX0

DX0

CLKX0

FSR0

DR0

CLKR0

Timer 0

Global-ControlRegister

Timer-PeriodRegister

Timer-CounterRegister

TCLK0

Timer 1

Global-ControlRegister

Timer-PeriodRegister

Timer-CounterRegister

TCLK1

Port Control

STRB -ControlRegister

Transfer-CounterRegister

PDATA Bus

PADDR Bus

DDATA Bus

DADDR1 Bus

DADDR2 Bus

DMADATA Bus

DMAADDR Bus

24

40

32 32 24 24 32

INT(3±0)

IACK

MCBL/MP

XF(1,0)

VDD(19±0)

VSS (24±0)

X1

X2/CLKIN

H1

H3

EMU(3±0)

322424 2424323232

CPU2

32 32 4040

MU

X

Co

ntro

ller

Perip

he

ral D

ata

Bus

Perip

he

ral A

dd

ress

Bus

CPU

1

REG

1

REG

2

MU

X

Figura C.1: Diagrama en bloques funcionales del DSP TMS320C3x.

Page 216: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 199

Sımbolo del registro Valor (hex) Nombre asignado a la funcionR0 00 Registro de Precision-Extendida 0R1 01 Registro de Precision-Extendida 1R2 02 Registro de Precision-Extendida 2R3 03 Registro de Precision-Extendida 3R4 04 Registro de Precision-Extendida 4R5 05 Registro de Precision-Extendida 5R6 06 Registro de Precision-Extendida 6R7 07 Registro de Precision-Extendida 7

AR0 08 Registro auxiliar 0AR1 09 Registro auxiliar 1AR2 0A Registro auxiliar 2AR3 0B Registro auxiliar 3AR4 0C Registro auxiliar 4AR5 0D Registro auxiliar 5AR6 0E Registro auxiliar 6AR7 0F Registro auxiliar 7DP 10 Puntero de la pagina de datos

IR0 11 Registro Indice 0

IR1 12 Registro Indice 1BK 13 Registro del tamano del bloqueSP 14 Puntero de la pila del sistemaST 15 Registro de estadoIE 16 Habilitacion de la interrupcion de la CPU/DMAIF 17 Banderas de las interrupciones de la CPU

IOF 18 Banderas del estado de las I/ORS 19 Direccion inicial para la repeticionRE 1A Direccion final para la repeticionRC 1B Contador para la repeticion

Tabla C.1: Registros de la CPU.

Page 217: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 200

absf absi addfaddf3 addi addi3and and3 andn

andn3 ash ash3b bu call

cmpf cmpf3 cmpicmpi3 dbu fixfloat frieee lbuldf ldfge ldfltldi ldige ldileldilt ldp loadlsh lsh3 mbmb0 mh0 mh1mpyf mpyf3 mpyimpyi3 negf neginop not oror3 pop popf

push pushf rcpfreti rets rndrol ror rptsstf sti stik

subf subf3 subisubi3 subrf subritoieee tstb tstb3xor xor3

Tabla C.2: Instrucciones usadas por el compilador de para los C3x

C.1.1. Instrucciones del TMS320C3X

El codigo assembler escrito utiliza muchas de las caracterısticas propias de

este DSP, en especial la capacidad de repetir bloques y procesamiento paralelo

de algunas de sus instrucciones. Sin embargo, el codigo es facil de leer cuando se

conocen los mnemonicos de las instrucciones. En la Tabla C.2 se muestra todas

las instrucciones reconocidas que lenguaje ensamblador proporciona y los codigos

de operacion de los mnemonicos.

Page 218: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 201

Mnemonico y sintaxis Descripcion.bss sımbolo, tamano en pa-labras, [blocking flag]

Reservar el tamano en palabras en laseccion .bss (datos no-inicializada)

.data Ensamblar dentro de la seccion .data(datos inicializados)

.sect nombre Ensamblar a una seccion (inicializada)

.text sımbolo Ensamblar a la seccion .text (codigoejectable)

sımbolo .usect nombre, ta-mano en palabras, [blockingflag]

Reservar el numero de palabras en unasection (no-inicializada)

Tabla C.3: Directivas que definen secciones.

C.1.2. Directivas de compilacion

Tan importantes como las instrucciones son las directivas de compilacion. Las

mismas instruyen al compilador para producir distintas opciones en el codigo

final. Las directivas mas usadas en el codigo assembler implementado son las de

seccion. Una seccion es la unidad mas pequena de un archivo objeto. La misma

puede ser un bloque de datos o de codigo que finalmente ocupara un espacio

contiguo en la memoria del TMS320C3x/C4x. La Tabla C.3 resume las directivas

de seccionamiento o de seccion del codigo y la Tabla C.4 resume las directivas

que administran las constantes.

Page 219: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 202

Mnemonico y sintaxis Descripcion.byte valor1 [, ... , valorn] Inicializa una o mas bytes en la

seccion actual.double valor1 [, ... , valorn] Inicializa una o mas constantes de

punto-flotante de 32-bits de preci-sion simple

.field valor [, size in bits] Inicializa un campo de longitudvariable

.float valor1 [, ... , valorn] Inicializa una o mas constantes depunto-flotante de 32-bits de preci-sion simple

.hword valor1 [, ... , valorn] Inicializa una o mas valores de 16-bit (mitad-palabra)

.ieee valor1 [, ... , valorn] Inicializa una o mas constantes depunto-flotante IEEE de 32-bits deprecision simple

.int valor1 [, ... , valorn] Inicializa uno o mas enteros de 16-bit

.ldouble valor Inicializa una constante de pun-to flotante de doble precision de40-bit Initialize en un formato so-portado por el compilador

.long valor1 [, ... , valorn] Inicializa uno o mas enteros de 32-bit

.sfloat valor1 [, ... , valorn] (solo C32) Inicializa una o masconstantes de punto-flotante de32-bits de precision simple

.space size in bits Reserva n bits en la actual sec-cion; una etiqueta apunta al co-mienzo del espacio reservado

.string string1 [, ... , stringn] Inicializa una o mas cadenas detexto

.word valor1 [, ... , valorn] Inicializa uno o mas enteros de 16-bit

Tabla C.4: Directivas que inicializan constantes tanto de datos como memoria.

Page 220: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 203

C.2. El entorno de simulacion

Se utilizo un simulador del DSP TMS320C3x, el cual permite realizar el de-

bugging del codigo assembler desarrollado para el DSP. El simulador cuenta con

dos ambientes de debugging : un ambiente basico de proposito general y un am-

biente de comportamiento. El primero permite seguir la ejecucion del programa

lınea por lınea, pudiendo observar el contenido de las variables, de los registros de

la cpu y de la memoria en cada punto de la ejecucion. El segundo permite recolec-

tar estadısticas acerca de la ejecucion del codigo (profiler), como por ejemplo el

tiempo de ejecucion de una funcion en particular, o de una porcion del programa,

la cantidad de veces que es invocada una funcion, la direccion de memoria de

una lınea en particular, y otros. Esta ultima caracterıstica es la que hace posible

determinar exactamente el tiempo de ejecucion de cualquier parte del algoritmo

de control.

C.3. El codigo fuente

Se comenzo con implementar un control de accionamientos mediante un perfil

de velocidad lineal. Luego trabajando sobre el codigo anterior ya simulado y

depurado, se agregaron los demas perfiles de velocidad. Aquı se presentara el

codigo fuente basico para un perfil de velocidad con aceleracion constante y luego

se expondran los listados con los codigos de los perfiles mas complejos.

Los comentarios, que en este compilador suceden al caracter de punto y coma,

explican cada lınea de codigo. Los mismos son redactados en ingles ya que este

codigo debıa ser compartido con el CERN para su puesta en practica y futura

modificacion.

Page 221: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 204

No

Initilization

comman

software nicializaciones del , memorias

;RECEPTION FROM UART (from PC)

Start data has

arrived?

Page 1

CTest v7.0 - MainLoopThursday, June 15, 2006

Initialization: DP & STACK

Initialization: Primary Bus

Initialization: Motor Group Addresses

Yes

main ;RECEPTION FROM UART

(from PC)

main

Tx

EXECUTION OF DECODED COMMAND.

TRANSMIT DATA-ACKNOWLEDGE TO

UART (to PC)

(transmits 0xfa which is “Data-acknowledge” word)

Page 222: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 205

Esto es la rutina principal de atencion de interrupciones.comman

STATE

ACC

VMAX

Uns

Transmit motor state n to

UART

FF

Page 2

Controlador Principal v0.08 - commandThursday, June 15, 2006

IMAX

SUP

SDOWN

MSn

MSN

IMIN

ACQ

Dns

Unu

Changing of acceleration a of

motor group N

Changing of Vmax a of motor

group N

Up Motion of motor n (steps)

Changing of Imax motor n

Motion to up stroke of motor n

Motion to down stroke of

motor n

Motion to middle stroke of

motor n

Motion to middle stroke of N-

motor group

Changing of Imin motor n

ACQUISITION OF SENSOR

GROUP N

Down Motion of motor n

(steps)

Up Motion of motor n

(microns)

VMINChanging of Vmin a of motor

group N

DnuDown Motion of motor n

(microns)

Free group from Fault

Page 223: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 206

m1_1

state

Initialize Serial Port as Driver

compatible.

tx Transmit motor state n to UART

Transmit r3 to UART

Page 3

Controlador Principal v0.08 - Page-3Thursday, June 15, 2006

state_e

Page 224: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 207

Page 4

Controlador Principal v0.08 - ProfilesThursday, June 15, 2006

spi_m

profiles

Initialize Serial Port as Driver

compatible.

NTzero

Transmit motor state n to UART

Transmit r3 to UART

profile_e

Initialize Serial port as DSP-Driver compatible

Direction Serial Port as DSP-Driver.

Timer initialization.

Primary Bus Control initialization: 3 WS

NoSGN(n) is 0 ?

Yes

main

VN(n)<VMAX(n)?

Yes

DOWN

left

NAC(n)-NT(n)+N1 >= 0 jumps to DOWN

(delayed).

CURRENTJumps to CURRENT to set the value of

current to be applied

NOVMAX NAC(n)<NT(n)/2? UP CURRENT

No

endomove0

CURRENT

endomove

n=n+1

AR1 = AR1 +1 (Circular)

;Build the words of sequences and currents to be transmited.

synch

PWAIT

Wait state. In order to be sure that Serial Port

;Activity has finished.

Which Mode?

end movement? move

Page 225: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 208

A continuacion se lista el programa general, originalmente implementado para

aceleraciones constantes.

; Algoriv7.1

; * source code beatification

; * more commenst added

;-----------------------------------------------------------------------

; Algoriv7

; * test con delay mayor.

;-----------------------------------------------------------------------

; Algoriv6

; * Reduccion de instrucciones cuando se utiliza solo 1 motor:

; + En vez de ir a ENDMOVE1, va a ENDMOVE3.

; + periodo del timer = 24 us

; + delay = 6 us

; + e = 24 us

;-----------------------------------------------------------------------

; Algoriv5

; * periodo del timer = 26 us

; * delay = 6 us

; * e = 26 us

;-----------------------------------------------------------------------

; ALgoriv4

; * velocidad de Tx y Tx en comunicacion serie es aumentada a 10 MHz

;-----------------------------------------------------------------------

; Algoriv3

; * idem pero con paso entero en vez de medio paso.

;-----------------------------------------------------------------------

; Algoriv2

; * Idem ctest_v3 pero sin recibir state en perfiles y con

; + el delay reducido a 10 us y con Ti=60us.

;-----------------------------------------------------------------------

;Ctest2. Program for Test Card.

;=======================================================================

; Version 3

; Date: 8/12/98

;

; FF Rutine, corrected output value to Drivers

; (destroyed R0 value)

;

;-----------------------------------------------------------------------

; Version 2

; Date: 10/11/98

;

; Original Version from D. Carrica

; It accomplishes all commands from test card as asked from a PC.

; It executes the "go to limits" rutines at maximun speed.

; 16 motor groups

; 16 AD groups.

Page 226: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 209

;

;=======================================================================

.version 30

.text

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ctest ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ctest

;INITIALIZATION.

;Initialization: DP & STACK

ldp @800000h ;Store 80 in Data Page Pointer.

ldi @stack,sp

;Initialization: Primary Bus.

ldi @pbcr,r0 ;Bus Control Register: RDY disabled, Hold disabled,

sti r0,@8064h ;3 ws.

;Initialization: Motor Group Addresses

MGA ldi 15,rc

ldi 0,r0

ldi @pointerM,ar1

rptb endMGA

sti r0,*ar1++(30)

endMGA addi 1,r0

;RECEPTION FROM UART (from PC)

;Start data has arrived?

ldi @iof1,iof

ctestl0 ldi iof,r0 ;This is for the system start

tstb 8h,r0 ;Ti waits for AAh in order to beggin.

bz ctestl0

ldi @mem10302,ar1

ldi *ar1,r1

and 0ffh,r1 ;8 lsb.

cmpi 0aah,r1 ;Compares to AAh

bnz ctestl0 ;If no AA, then it waitsa for. If AA then continues.

;main. Return point from CTest iteration.

main

;Reception of 5-byte-data.

ldi @pointerPC,ar7 ;Pointer of memory received from PC in AR7.

ldi @iof1,iof

ldi 4,rc

rptb end1

looprx1 ldi iof,r0

tstb 8h,r0

bz looprx1

ldi @mem10302,ar1

ldi *ar1,r1

and 0ffh,r1 ;Atention: this is temporary due to

;DATA8-15 of xilinx are 1 (because they are in high z)

end1 sti r1,*ar7++

;DECODING RECEIVED DATA.

;EXECUTION OF DECODED COMMAND.

call comman

;TRANSMIT DATA-ACKNOWLEDGE TO UART (to PC)

ldi 0fah,r3 ;fa is Data-acknowledge word.

Page 227: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 210

call tx

br main

;;;;;;;;;;;;;;;;;;;;;;;;;;; End ctest iteration ;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; comman ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;DECODING OF RECEIVED DATA.

comman ldi @pointerPC,ar2 ;R2 = @pointerPC

ldi *ar2,r2

call truco

addi 2,r2 ; r2 = r2 + table

addi r1,r2

b r2

;EXECUTION OF DECODED COMMAND.

br STATE

br ACC

br VMIN

br VMAX

nop

nop

br Uns

br IMAX

br SUP

br SDOWN

br MSn

br MSN

br IMIN

nop

br ACQ

nop

br Dns

br Unu

nop

br Dnu

nop

nop

br FF

;;;;;;;;;;;;;;;;; End Command suboutine ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;; TRUCO: It is used in comman in order to jump

;;;;;;;; to the correct command.

truco ldi sp,ar1

ldi *ar1,r1

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;; End Truco subroutine ;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; STATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;; Transmit motor state n to UART ;;;;;;;;;;;;;;;;;;;;;;;

;Initialize Serial Port as Driver compatible.

;Direction Serial Port to Driver.

;Memory Updating & Parameterization.

;Send ANSWER.

;Reception Motor State.

STATE call m1_1

Page 228: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 211

;Transmition State to UART (PC).

call tx ;Transmit r3 to UART.

STATE_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;; End of STATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;; m1_1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Initialize Serial Port as Driver compatible.

m1_1 call spi_m ;3.5 Mbaud, Tx 32 bits, Rx 24 bits.

ldi @804ch,r0 ;This is done in order to enable the next reception.

;Direction Serial Port as DSP-DRIVER.

ldi @mem10204,ar2 ;Addresing 10204h

ldi *ar2,r0

;Memory Updating & Parameterization.

;"n" ==> motor n addressing and group N addressing.

ldi @9f9dh,r2 ;loads "n" in R2.

ash -3,r2 ;R2=R2/8 ==> R2=N:motor group.

mpyi 30,r2 ;R2=motor group memory pointer (relative to the

;pointer of all motor memory)

ldi @pointerM,r3;R3=pointer of motor GROUP 0.

addi r2,r3

sti r3,@pointerN

;"ANSWER" word updating.

ldi @9f9dh,r2 ;loads de number of motor in R2.

and 38h,r2 ;R2 is the Motor Group.

or 2,r2 ;

ash 24,r2 ;R2 is the word answer to be sent to the Driver.

sti r2,@ANSWER

;Send "Answer"

call PWAIT

ldi @ANSWER,r0

sti r0,@8048h

;Reception Motor State (from DRIVER)

call WAITRX

ldi @804ch,r0

ldi @to1,r1

bnz m1_1_l

ldi @ffffff,r0

m1_1_l sti r0,@state1

call STATES ;State (motor n)-->R3

m1_1_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; End of m1_1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;; tx: TRANSMITION to PC ;;;;;;;;;;;;;;;;;;;;;

tx ldi @mem10300,ar0

looptx ldi iof,r0

tstb 80h,r0

bz looptx

sti r3,*ar0

nop

nop

endtx rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; End of tx ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Page 229: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 212

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;spi_m ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;INITIALIZATION: SERIAL PORT (Comm. with Motor Drivers)

spi_m ldi @spgc0_m,r0 ;Reset the Serial-Port Global Control (808040)

sti r0,@8040h ;

ldi @fsx,r0 ;Config. the FSX Port Control (808042)

sti r0,@8042h ;

ldi @fsr,r0 ;Config. the FSR Port Control (808043)

sti r0,@8043h ;

ldi @ticon,r0 ;Config. the Timer Control (808044)

sti r0,@8044h ;

ldi @tiper,r0 ;Config. the Timer Period (808046)

sti r0,@8046h ;

ldi @spgc_m,r0 ;Config. the Serial-Port Global Control (808040)

sti r0,@8040h ;

spi_m_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; End of spi_m ;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ACC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;Changing of acceleration a of motor group N ;;;;;;;;;;;;;

ACC

;Memory Updating & Parameterization.

ldi @pointerM,ar0 ;AR0=pointer of motor memory.

ldi 4,ir0 ;Index register IR0= 4 ==> pointer of a*e of

;the first motor group memory.

ldi @9f9dh,r2 ;R2=N:number of motor group.

mpyi 30,r2 ;R2=motor group memory pointer (relative to

;the pointer of all motor memory)

addi r2,ir0 ;IR0 = position of a*e of the motor group N.

ldi @9f9fh,r0 ;High part of data in R0.

ash 8,r0 ;R0 is shifted to the left 8 bits.

or @9f9eh,r0 ;R0 = datalow + datahigh shifted. So R0 = data.

ash 1,r0 ;R0 is multiplied by 2 because the motion

; is in half steps.

float r0,r0 ;Transform r0 to floating format because is

;considered as floating point in rutines

;profiles and motors.

mpyf @e,r0 ;R0 = a*e (floating point)

stf r0,*++ar0(ir0) ;a*e is stored in position of a*e

;of group N.

ldf @e,r0 ;e is stored in postion e of group N.

stf r0,*++ar0

ACC_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END ACC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; VMIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;; Changing of Vmin a of motor group N ;;;;;;;;;;;;;;;;;

VMIN ;Memory Updating & Parameterization.

ldi 2,ir0 ;Index register IR0= 2 ==> pointer of Vmin of

;the first motor group memory.

call m3_4

VMIN_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END VMIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Page 230: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 213

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; m3_4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Memory Updating & Parameterization.

m3_4 ldi @pointerM,ar0 ;AR0=pointer of motor memory.

ldi @9f9dh,r2 ;R2=N:number of motor group.

mpyi 30,r2 ;R2=motor group memory pointer (relative

;to the pointer of all motor memory)

addi r2,ir0 ;IR0 = position of Vmin of the motor

;group N.

ldi @9f9fh,r0 ;High part of data in R0.

ash 8,r0 ;R0 is shifted to the left 8 bits.

or @9f9eh,r0 ;R0 = datalow + datahigh shifted.

;So R0 = data.

ash 1,r0 ;R0 is multiplied by 2 because

;motion is in 1/2 steps.

float r0,r0 ;It is input as an integer but is

;treated as a floating point data.

stf r0,*++ar0(ir0) ;Vmin (or Vmax) is stored in position

;of Vmin of group N.

endm3_4 rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; End m3_4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; VMAX ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

VMAX

;;;;;;;;;;;;;; Changing of Vmax a of group of motors N. ;;;;;;;;;;;;;;;;

ldi 3,ir0 ;Index register IR0= 3 ==> pointer

;of Vmax of the first motor group memory

call m3_4

VMAX_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END VMAX ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Uns ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;; Up Motion of motor n (steps) ;;;;;;;;;;;;;;;;;;;;

Uns

;Memory Updating & Parameterization.

call NOTok1

ldi 1,r2

sti r2,@9fa0h

ldi 0,r0

sti r0,@mode

;Initialize Serial Port as Driver compatible.

call spi_m

ldi @804ch,r0 ;This is done in order to enable

;the next reception.

;Direction Serial Port as DSP-Driver.

ldi @mem10204,ar2

ldi *ar2,r0

;Memory Updating & Parameterization.

;Execution Motion Algorithm ("profiles")(Send Ilevel, MotionV & Answer).

;Reception motor states.

call m

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; End Uns ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Page 231: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 214

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Dns ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;; Down Motion of motor n (steps) ;;;;;;;;;;;;;;;;;;;

Dns

;Memory Updating & Parameterization.

call NOTok1

ldi 0,r2

sti r2,@9fa0h

ldi 0,r0

sti r0,@mode

;Initialize Serial Port as Driver compatible.

call spi_m

ldi @804ch,r0 ;This is done in order to enable the

;next reception.

;Direction Serial Port as DSP-Driver.

ldi @mem10204,ar2

ldi *ar2,r0

;Memory Updating & Parameterization.

;Execution Motion Algorithm ("profiles")(Send Ilevel, MotionV & Answer).

;Reception motor states.

call m

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; End Dns ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Unu ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;; Up Motion of motor n (microns) ;;;;;;;;;;;;;;;;;;;

Unu

;Memory Updating & Parameterization.

call NOTok1

ldi 1,r2

sti r2,@9fa0h

ldi 0,r0

sti r0,@mode

;Transfrom microns to steps.

call transform

;Initialize Serial Port as Driver compatible.

call spi_m

ldi @804ch,r0 ;This is done in order to enable

;the next reception.

;Direction Serial Port to Driver.

ldi @mem10204,ar2

ldi *ar2,r0

;Memory Updating & Parameterization.

;Execution Motion Algorithm ("profiles")(Send Ilevel, MotionV & Answer).

;Reception motor states.

call m

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; End Unu ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Dnu ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;; Down Motion of motor n (microns) ;;;;;;;;;;;;;;;;;;

Dnu

;Memory Updating & Parameterization.

call NOTok1

Page 232: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 215

ldi 0,r2

sti r2,@9fa0h

ldi 0,r0

sti r0,@mode

;Transform microns to steps.

call transform

;Memory Updating & Parameterization.

;Execution Motion Algorithm ("profiles")(Send Ilevel, MotionV & Answer).

;Reception motor states.

call m

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; End Dnu ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; transform ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Transform microns to steps (result in @809f9f/a0h).

transform ldi @9f9fh,r1 ;High part of Nt is stored in R1.

ash 8,r1

or @9f9eh,r1 ;Low part of Nt is stored R1

float r1,r1

mpyf @u2step,r1

addf @round,r1

fix r1,r1

ldi r1,r2

and 0ffh,r2

sti r2,@9f9eh

ash -8,r1

sti r1,@9f9fh

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END transform ;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; m ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;; (Used by Uns, Dns, Unu , Dnu, SDOWN) ;;;;;;;;;;;;;;;;;

m

;Memory Updating & Parameterization.

;Obtention motor group (@N), motor group pointer (@pointerN)

;& motor group sequence pointer (@pointerSEQ).

ldi @9f9dh,r2 ;loads de number of motor in R2.

ash -3,r2 ;R2=R2/8 ==> R2=N:motor group.

sti r2,@N

mpyi 30,r2 ;R2=motor group pointer (relative to pointer of

;all motor memory)

ldi @pointerM,r3 ;R3=pointer of motor GROUP 0.

addi r2,r3

sti r3,@pointerN

addi 6,r3 ;R3=pointerN+6 ==> Nt pointer of motor group N.

ldi r3,ar1 ;AR1=pointerN+6 ==> Nt pointer of motor group N.

ldi @9f9dh,r2

ash -3,r2

mpyi 6,r2

ldi @pSEQ,r1

addi r2,r1

sti r1,@pointerSEQ

;Zero all NTs of group N.

Page 233: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 216

call NTzero

;Obtention new Nt of motor n and store it in motor

;group N position n.

ldi @9f9dh,r1 ;loads de number of motor in R1.

and 7,r1 ;R1=nn:position of the motor in his group.

addi r3,r1 ;R1=R1+R3 ==> R1= (position of Nt of the motor nn

;of the group N) + 1.

subi 1,r1 ;R1= (position of Nt of the motor nn

;of the group N).

ldi r1,ar1 ;R1-->AR1.

ldi @9f9fh,r1 ;High part of Nt is stored in R1.

ash 8,r1

or @9f9eh,r1 ;Low part of Nt is stored R1

ash 1,r1

sti r1,*ar1 ;Nt is stored in Nt position of motor nn of the

;group N.

;Store sign of motion in motor-n-sgn of motor group N.

ldi ar1,r1 ;Charge position steps of motor n

addi 18,r1 ;R1= Position sgn of motor n

ldi r1,ar1 ;Store position sgn of motor n

ldi @9fa0h,r1 ;Charge sgn

sti r1,*ar1 ;Store sgn of motor n of group n

;Composition of IlevelV frame (bits26,25=M1,M0=01

;bits29,28,27=A2,A1,A0 (address).

ldi @pointerN,ar0

ldi *ar0,r4 ;R4=address of motor group N. Also pointerN.

ash 3,r4 ;R4 is shifted 3 times to the left.

or 2,r4 ;R4 contains now m1=0,m0=1, corresponding to

;an Ilevel word.

ash 24,r4 ;R4 is shifted 24 times to the left.

sti r4,@IlevelV ;IlevelV is Ilevel but empty of I values. It

;has only the address and the modifier bits

;in the most significative positions.

;Composition of MotionV frame (bits26,25=M1,M0=00

;bits29,28,27=A2,A1,A0 (address).

ldi @mmm,r5 ;mmm=R5 has 1s’ in bits 29,28,27 in order to

;preserve only the same address of IlevelV.

and r4,r5 ;R5=MotionV except for mode bits (bits 26,25).

sti r5,@MotionV ;MotionV is Motion but empty of Seq values. It

;has only the address and the modifier bits in

;the most significative positions.

;Execution Motion Algorithm ("profiles")(Send Ilevel, MotionV & Answer).

;Reception motor states.

call profiles

m_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; End m subroutine ;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IMAX ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;; Changing of Imax motor n ;;;;;;;;;;;;;;;;;;;;

IMAX

;Memory Updating & Parameterization.

ldi @9f9dh,r2 ;loads de number of motor in R2.

ash -3,r2 ;R2=R2/8 ==> R2=N:motor group.

Page 234: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 217

mpyi 30,r2 ;R2=motor group memory pointer (relative to the

; pointer of all motor memory)

ldi @pointerM,r3;R3=pointer of motor memory.

addi 18,r3 ;R3=pointer of motor memory + 18 ==> pointer of

;Imax of the first motor group memory.

ldi @9f9dh,r1 ;loads de number of motor in R1.

and 7,r1 ;R1=nn:position of the motor in his group.

addi r3,r1 ;R1=R1+R3 ==> R1= (position of Imax of the motor nn

;of the group 0) + 1.

subi 1,r1 ;R1= position of Imax of the motor nn

;of the group 0.

addi r2,r1

ldi r1,ar1 ;R1-->AR1.

ldi @9f9eh,r1 ;Imax is stored in the position of Imax of the

sti r1,*ar1 ;motor nn of the group N. (Only the LO part. HI

;part is not used because Imax is a short word).

IMAX_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END IMAX ;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SUP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;; Motion to up stroke of motor n ;;;;;;;;;;;;;;;

SUP

;Initialize Serial Port as Driver compatible.

;Direction Serial Port to Driver.

;Memory Updating & Parameterization.

;Ask for & Reception Motor State.

call m1_1

;Memory Updating & Parameterization.

call NOTok2

ldi 0h,r0

sti r0,@9f9eh

ldi 0e0h,r0

sti r0,@9f9fh

ldi 0,r0

sti r0,@9fa0h

ldi 2,r0

sti r0,@mode

;Execution Motion Algorithm ("profiles")(Send Ilevel, Motion & Answer).

;Reception motor states.

call m

SUP_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END OF SUP ;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SDOWN ;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;; Motion to down stroke of motor n ;;;;;;;;;;;;;;

SDOWN

;Initialize Serial Port as Driver compatible.

;Direction Serial Port to Driver.

;Memory Updating & Parameterization.

;Ask for & Reception Motor State.

call m1_1

;Memory Updating & Parameterization.

call NOTok2

Page 235: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 218

ldi 0h,r0

sti r0,@9f9eh

ldi 0e0h,r0

sti r0,@9f9fh

ldi 1,r0

sti r0,@9fa0h

ldi 3,r0

sti r0,@mode

;Execution Motion Algorithm ("profiles")(Send Ilevel, Motion & Answer).

;Reception motor states.

call m

SDOWN_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END OF SDOWN ;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MSn ;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;; Motion to middle stroke of motor n ;;;;;;;;;;;;;;

;Initialize Serial Port as Driver compatible.

;Direction Serial Port to Driver.

;Memory Updating & Parameterization.

;Ask for & Reception Motor State.

MSn call m1_1

;Memory Updating & Parameterization.

call NOTok2

ldi 0h,r0

sti r0,@9f9eh

ldi 0e0h,r0

sti r0,@9f9fh

ldi 1,r0

sti r0,@mode

;Upper or Lower Middle stroke?

tstb 2,r3 ;Test ms

bnz MSn_l2 ;branch if ms=1

;Lower Middle stroke.

;Move motor up.

;Memory Updating & Parameterization.

call SGN ;load in ar2, the position

ldi 0,r1 ;of sgn of motor n

sti r1,@9fa0h

;Execution Motion Algorithm ("profiles")(Send Ilevel,

;Motion & Answer).

;Reception motor states.

call m

rets

;Upper Middle Stroke.

;Move motor down.

MSn_l2 ;Memory Updating & Parameterization.

call SGN ;load in ar2, the position

ldi 1,r1 ;of sgn of motor n

sti r1,@9fa0h

;Execution Motion Algorithm ("profiles")(Send Ilevel,

;Motion & Answer).

;Reception motor states.

call m

Page 236: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 219

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END OF MSn ;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MSN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;; Motion to middle stroke of N-motor group ;;;;;;;;;;;;;;;

MSN

;Memory Updating & Parameterization.

call NOTok2

;Initialize Serial Port as Driver compatible.

;Direction Serial Port to Driver.

;Memory Updating & Parameterization.

;Ask for & Reception Motor State.

call m1_1bis

;Memory Updating & Parameterization.

ldi 4,r0

sti r0,@mode

ldi @MSN_to,r0 ;time-out: for preventing an absent motor

;in the card.

sti r0,@MSN_to1

ldi @pointerN,ar0

;Parameterization of sign and Nt values of motor group N.

addi 11,ar0

ldi @state1,r0

and @patos,r0

sti r0,@oldstate

ash -1,r0

ldi 5,rc

ldi @chiche,r3 ;Worst case maximum number of steps -> R3.

rptb MSN_l

ldi r0,r1

ash -4,r0

and 0fh,r1

sti r1,*+ar0(18)

MSN_l sti r3,*ar0--

;Memory Updating & Parameterization.

;Execution Motion Algorithm ("profiles")(Send Ilevel, MotionV & Answer).

;Reception motor states.

call mbis

MSN_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END OF MSN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; mbis ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Used by MSN ;;;;;;;;;;;;;;;;;;;;;;;;;

;Memory Updating & Parameterization.

;Obtention motor group (@N), motor group pointer (@pointerN) & motor group

;sequence pointer (@pointerSEQ).

mbis ldi @9f9dh,r2 ;loads de number of motor in R2.

sti r2,@N

mpyi 30,r2 ;R2=motor group memory pointer (relative to the

;pointer of all motor memory)

ldi @pointerM,r3;R3=pointer of motor GROUP 0.

addi r2,r3

Page 237: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 220

sti r3,@pointerN

addi 6,r3 ;R3=pointer of motor group N + 6 ==> Nt pointer of

;motor group N.

ldi r3,ar1 ;AR1=pointer of motor group N + 6 ==> Nt pointer of

;motor group N.

ldi @9f9dh,r2

mpyi 6,r2

ldi @pSEQ,r1

addi r2,r1

sti r1,@pointerSEQ

;Composition of IlevelV frame (bits26,25=M1,M0=01

;bits29,28,27=A2,A1,A0 (address).

ldi @pointerN,ar0

ldi *ar0,r4 ;R4=address of motor group N. Also pointerN.

ash 3,r4 ;R4 is shifted 3 times to the left.

or 2,r4 ;R4 contains now m1=0,m0=1, corresponding to

;an Ilevel word.

ash 24,r4 ;R4 is shifted 24 times to the left.

sti r4,@IlevelV ;IlevelV is Ilevel but empty of I values. It

;has only the address and the modifier bits

;in the most significative positions.

;Composition of MotionV frame (bits26,25=M1,M0=00

;bits29,28,27=A2,A1,A0 (address).

ldi @mmm,r5 ;mmm=R5 has 1s’ in bits 29,28,27 in order to

;preserve only the same address of IlevelV.

and r4,r5 ;R5=MotionV except for mode bits (bits 26,25).

sti r5,@MotionV ;MotionV is Motion but empty of Seq values. It

;has only the address and the modifier bits

;in the most significative positions.

;Execution Motion Algorithm ("profiles)(Send Ilevel, MotionV & Answer).

;Reception motor states.

call profiles

mbis_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; End mbis ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; m1_1bis ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

m1_1bis

;Initialize Serial Port as Driver compatible.

call spi_m

ldi @804ch,r0 ;This is done in order to enable the next reception.

;Direction Serial Port as DSP-Driver.

ldi @mem10204,ar2

ldi *ar2,r0

;Memory Updating & Parameterization.

;"N" ==> group N addressing.

ldi @9f9dh,r2 ;loads de number of motor in R2.

mpyi 30,r2 ;R2=motor group memory pointer (relative to the

;pointer of all motor memory)

ldi @pointerM,r3;R3=pointer of motor GROUP 0.

addi r2,r3

sti r3,@pointerN

;"ANSWER" word updating.

ldi @9f9dh,r2 ;loads de number of motor in R2.

Page 238: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 221

ash 3,r2 ;R2 is the Motor Group.

or 2,r2 ;

ash 24,r2 ;R2 is the word anwer to be sent to the Driver.

sti r2,@ANSWER

;Ask for & Reception Motor State (from DRIVER)

;Send "Answer"

call PWAIT

ldi @ANSWER,r0

sti r0,@8048h

;Reception Motor State (from DRIVER)

call WAITRX

ldi @804ch,r0

sti r0,@state1

call STATES

m1_1bis_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;; End of m1_1bis ;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IMIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;; Changing of Imin motor n. ;;;;;;;;;;;;;;;;;;

IMIN

;Initialize Serial Port as Driver compatible.

call spi_m

ldi @804ch,r0 ;This is done in order to enable the next reception.

;Direction Serial Port to Driver.

ldi @mem10204,ar2

ldi *ar2,r0

;Memory Updating & Parameterization.

;Store Imin(n).

ldi @9f9dh,r2 ;loads de number of motor in R2.

ash -3,r2 ;R2=R2/8 ==> R2=N:motor group.

mpyi 30,r2 ;R2=motor group memory pointer (relative to

;the pointer of all motor memory)

ldi @pointerM,r3;R3=pointer of motor memory.

addi 12,r3 ;R3=pointer of motor memory + 12 ==> pointer of

;Imax of the first motor group memory.

ldi @9f9dh,r1 ;loads de number of motor in R1.

and 7,r1 ;R1=nn:position of the motor in his group.

addi r3,r1 ;R1=R1+R3 ==> R1= (position of Imin of the motor nn

;of the group 0) + 1.

subi 1,r1 ;R1= (position of Imin of the motor nn

;of the group 0).

addi r2,r1

ldi r1,ar1 ;R1-->AR1.

ldi @9f9eh,r1 ;Imin is stored in the position of Imin of the

sti r1,*ar1 ;motor nn of the group N. (Only the LO part.

;HI part is not used because Imin is a short word).

;Composition IlevelV (bits26,25=M1,M0=01; bits29,28,27=A2,A1,A0 (address).

ldi @9f9dh,r2 ;loads de number of motor in R2.

ash -3,r2 ;R2=R2/8 ==> R2=N:motor group.

mpyi 30,r2 ;R2= relative pointer of motor group N.

ldi @pointerM,r0;R0=pointer of motor memory.

addi r0,r2 ;R2=pointer of motor memory + 30*N ==> pointer of

;of motor group N.

Page 239: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 222

ldi r2,ar1 ;R2-->AR1.

ldi *ar1,r4 ;R4=Address of group N.

ash 3,r4 ;R4 is shifted 3 times to the left.

or 2,r4 ;R4 contains now m1,m0.

ldi 5,rc ;RC=5, so there will be a repetition of 6 times.

addi 12,ar1

rptb m14_1 ;Loads Imin of motor n and shift 4 bits (6 times)

ash 4,r4 ;n=n+1

ldi *ar1++,r0 ;It is necessary to reset all bits of Imin except

and 0fh,r0 ;the four low significative. So the reason of and

m14_1 or r0,r4 ;instruction.

ldi r4,r5

;Send Ilevel.

call PWAIT ;Wait state. In order to be sure that Serial Port

;Activity has finished.

sti r5,@8048h ;Sends the Ilevel of motor group N to serial port,

;so to the Drivers.

m14_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END IMIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;FF ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;; Free group from Fault ;;;;;;;;;;;;;;;;;;;;;;;;

FF

;Memory Updating & Parameterization.

ldi @9f9dh,r0

sti r0,@N

;Initialize Serial Port as Driver compatible.

call spi_m

ldi @804ch,r1 ;This is done in order to enable the next reception.

;Direction Serial Port as DSP-Driver.

ldi @mem10204,ar2

ldi *ar2,r1

;Send Motion.

call PWAIT

ldi @N,r0 ;Conformation of SEQOUT

ash 27,r0

and @ff,r0

sti r0,@8048h

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END OF FF ;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PWAIT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

PWAIT ldi 2,r3 ;Wait state. In order to be sure that Serial Port

ldi 8,r1 ;Activity has finished. The first

pwait0 ldi @8040h,r4

and r4,r3,r2 ;two nop’s are for assuring that the XRDY bit be

bz pwait0 ;modified after the loading of the DXR. Loop wait0

Page 240: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 223

pwait ldi @8040h,r4

and r4,r1,r2 ;garantize that bit XSEMPTY is available. Loop wait;

bnz pwait ;garantize that serial port has finished activity.

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END of PWAIT ;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; WAITRX ;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; WAIT FOR RX PURPOSES IN MOTORS1

WAITRX ldi 1,r1 ;Wait loop in order to detect a new word in

;Reception Register.

ldi @SPGC,ar1 ;Verifies if bit1 of Serial Port Global Control

;register (808040h) is 1. It does again the loop

; until bit1 be 0 or until there be a time out.

ldi @to,r0 ;100->R0.

sti r0,@to1

wait_rx_l subi 1,r0 ;R0=R0-1. Time-out verification.

bz wait_rx_l1 ;If R0=0, then go to wait_rx_l1; that is a time

;out exists.

and *ar1,r1,r2 ;Verification of bit1 of SPGC register, that

bz wait_rx_l ;is if a RX has arrived.

wait_rx_l1 sti r0,@to1 ;R0->to1 (time-out flag).

rets ;bit1=1 or time-out, then return from subroutine.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END of WAITRX ;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Timeri ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

timeri ldi 0,r0 ;Reset Timer 0.

sti r0,@8020h

ldi @period1,r0 ;Period=20000, so time between steps is 2ms.

sti r0,@8028h

ldi @timer2,r0 ;Timer 0 is set as pulse mode, internal CLKSRC

sti r0,@8020h ;and resets the count and beggins again.

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of timeri ;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NTzero ;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Zero all NTs of group N.

NTzero ldi @pointerN,ar0

addi 6,ar0

ldi 0,r0

rpts 5

sti r0,*ar0++

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END OF timeri ;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; STATES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;

STATES ldi @state1,r3 ;R3=pointer of motor memory.

ldi @9f9dh,r1 ;loads de number of motor in R1.

and 7,r1 ;R1=nn:position of the motor in his group.

addi -6,r1 ;R1=nn-6

mpyi 4,r1 ;R1=4*(nn-1)

ash r1,r3 ;R3 (State of the group N) is left shifted R1 times.

and 0fh,r3 ;R3 = State of motor nn of the group N.

rets

Page 241: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 224

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END OF STATES ;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SGN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; AR2 points out the n-motor sgn position

SGN ldi @pointerN,r1

addi 24,r1

ldi @9f9dh,r2

and 7,r2

subi 1,r2

addi r2,r1

ldi r1,ar2

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END OF SGN ;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; synchr ;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; SYNCHRONIZATION WITH 50 us ;;;;;;;;;;;;;;;;;

synchr tstb 100h,if ;If TINT0 arrives,then continue, if not return

;to motors_l8.

bz synchr ;...

and 0effh,if ;Clear TINT0 in IF.

rets ;Jumps to motors_l

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END OF synchr ;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; FILTERING ;;;;;;;;;;;;;;;;;;;;;;;;;;

FILTERING ldi 6,bk ;6 -> block size (circular addressing).

ldi *AR7,R0 ;Loads PSEQ(n) in R0.

and *AR1,R0 ;’Filters’ the new SEQ(n).

sti R0,*+AR4(38) ;Stores the new SEQ(n) in OUTSEQ(n).

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;END OF FILTERING ;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; alarm ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

alarm sti r0,@alarma

;This block sets the value stored as IMIN(n) as the current to be applied

;to the motors. If the motor must execute any step movement, this value of

;current is modified to the required value.

finish ldi @pointerN,ar0 ;Pointer of table IMIN(n) -> AR0.

addi 12,ar0 ;...

ldi @poinOUTCUR,ar4 ;Pointer of table OUTCUR -> AR4.

ldi 5,rc

rptb INICUR1 ;The instructions contained to INICUR are

;executed 6 times.

ldi *ar0++,r0 ;Loads the value of minimum current of the motor.

and 0fh,R0

INICUR1 sti r0,*ar4++(1) ;Stores the value in OUTCUR(n).

;AR0 and AR4 are modified!!!!!!!!!!!!!!

ldi 0,r1 ;R1=0.

ldi @poinOUTCUR,ar4 ;pointer of table OUTCUR -> AR4.

ldi 5,rc ;5->RC

rptb endor2 ;Repeats the instructions to ENDOR2 6 times.

;Charge of significative bits of

or *AR4++(1),R1 ;OUTCUR(n) in CUROUT.

endor2 ash 4,r1 ;Shifts to left because of motor order in word.

Page 242: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 225

ash -4,r1 ;Shifts to the right for compensating the last

; left shifting.

ldi @N,r2 ;N->R2.

ash 27,r2 ;

or @Imask,r2 ;Or currents with Imask (which contains the

or r2,r1 ;mask for good address.

sti r1,@9de7h ;Stores currents of motors 1 to 6 in CUROUT.

;NTs of group N = 0

call NTzero

; SYNCHRONIZATION WITH 50 us

synch1 ldi 800h,r0

tstb @8020h,r0

bz synch1

; transmition CUROUT

call WAITRX

ldi @804ch,r0 ;Clear the received word.

call PWAIT ;Wait state. In order to be sure that Serial Port

;Activity has finished.

ldi @9de7h,r0 ;Sends the CUROUT to serial port.

sti r0,@8048h ;

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END of Alarm ;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; timeout ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

timeout ldi @MSN_to1,r0

subi 1,r0

sti r0,@MSN_to1

timeout_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;; END OF timeout ;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; STATES1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

STATES1 ldi @state1,r3 ;R3=pointer of motor memory.

ldi @n,r1 ;loads de number of motor in R1.

addi -6,r1 ;R1=nn-6

mpyi 4,r1 ;R1=4*(nn-1)

ash r1,r3 ;R3 (State of the group N) is left shifted R1 times.

and 0fh,r3 ;R3 = State of motor nn of the group N.

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END STATES1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; STATESN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

STATESN ldi @pointstate,r3 ;R3=pointer of motor memory.

ldi @9f9dh,r2 ;loads de number of group motor in R2.

addi r3,r2 ;R2=R2+R3 ==> R2= position of State of

;the group N.

ldi r2,ar3 ;

ldi *ar3,r3 ;State of group N --> R3

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END STATESN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NOTok1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

NOTok1 ldi @notOK,r0

sti r0,@NOTOK

Page 243: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 226

ldi @notOK1,r0

sti r0,@NOTOK1

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;; END OF NOTok1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NOTok2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

NOTok2 ldi @notOK2,r0

sti r0,@NOTOK

ldi @notOK3,r0

sti r0,@NOTOK1

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;; END OF NOTok2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ACQ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;; ACQUISITION OF SENSOR GROUP N ;;;;;;;;;;;;;;;;;;;;;

ACQ

;(Acquisition (20 values every time))

;Direction Serial Port to AD

;Initialize Serial Port as AD compatible.

;Send Address.

;Reception acquired data.

ldi @acq0,ar0 ;AR0 = first memory where acquired

;values are stored.

call acquisiton ;20 channels.

;Storage acquired values.

ldi @acq0,ar0

ldi @sensor0,ar4 ;AR4= pointer of sensor memory.

ldi @9f9dh,r2 ;R2=N:number of sensor group.

mpyi 20,r2 ;R2= sensor group memory pointer

;(relative to the pointer of all

;sensor memory)

addi r2,ar4 ;AR4 = sensor group memory

ldi 19,rc ;pointer (absolute).

rptb stg

ldi *ar0++,r0

stg sti r0,*ar4++

;Transmition acquired values to UART (to PC).

call trans

ACQ_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END ACQ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; trans ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Transmition acquired values to PC.

;Initialization Primary Bus & I/O flags.

trans ldi @pbcr,r0 ;Bus Control Register: RDY disabled, Hold

sti r0,@8064h ;disabled, 3 ws.

ldi @iof1,iof

;Transmition.

txa1 ldi 19,rc ;Communication between DSP and UART.

ldi @acq0,ar0 ;acq0=809f88

ldi @mem10300,ar7 ;10300=UART address.

rptb txa1_e

txa1_l ldi iof,r0 ;Verifies if acknowledge XF0.

Page 244: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 227

tstb 80h,r0

bz txa1_l

ldi *ar0++,r3 ;Sends low byte of acquired word to UART.

sti r3,*ar7

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

txa2_l ldi iof,r0 ;Verifies if acknowledge XF0.

tstb 80h,r0

bz txa2_l

ash -8,r3

sti r3,*ar7 ;Sends high byte of acquired word to UART.

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

txa1_e nop

trans_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END trans ;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; acquisiton ;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;; Acquisition (20 values every time) ;;;;;;;;;

acquisiton

;Direction Serial Port to AD.

ldi @mem10200,ar2 ;10200h --> AR2.

ldi *ar2,r0 ;Address 10200h .

;Initialize Serial Port as AD compatible.

call spi_ad

;Send Address.

ldi @9f9dh,r0 ;R1=N, real address or number of group

call PWAIT ;Wait state. In order to be sure that Serial Port

;Activity has finished.

sti r0,@8048h ;

;Reception acquired data.

Page 245: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 228

ldi @acq0,ar0

ldi @804ch,r6 ;To free the Reception Data Register (DRR).

ldi 0,r0

sti r0,@804ch

ldi 19,rc ;RC=(n-1) times (now 19 so the block

rptb acquisiton_l ;is repeated 14 or 20 times).

nop

nop

call WAITRX

ldi @804ch,r0 ;Store the received data (DRR) in r0.

and @chiche,r0 ;Filter of received data (AND with 0000ffff

;in order to clear 16 msb which don’t carry data)

acquisiton_l sti r0,*ar0++ ;Store the received data in 14/20

;memory positions beggining from asq0.

acquisiton_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END acquisiton ;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; spi_ad ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;INITIALIZATION: SERIAL PORT (Comm. with ADs)

spi_ad ldi @spgc0_ad,r0;Reset the Serial-Port Global Control (808040)

sti r0,@8040h ;

ldi @fsx,r0 ;Config. the FSX Port Control (808042)

sti r0,@8042h

ldi @fsr,r0 ;Config. the FSR Port Control (808043)

sti r0,@8043h

ldi @ticon,r0 ;Config. the Timer Control (808044)

sti r0,@8044h

ldi @tiper,r0 ;Config. the Timer Period (808046)

sti r0,@8046h

ldi @spgc_ad,r0 ;Config. the Serial-Port Global Control (808040)

sti r0,@8040h ;

spi_ad_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;END OF spi_ad ;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Profiles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;; THE FOLLOWING PROGRAM MAKES POSSIBLE THE SIMULTANEOUS ;;;;;;;;;

;;; MOVEMENT OF 6 STEPPER MOTORS WITH THE IMPLEMENTATION OF THE SPEED ;;

;;;;;;;;;; VARIATIONS SPECIFIED BY THE RESPECTIVE PARAMETERS ;;;;;;;;;;;

;; This routine determines and transmits the words to the motor ;;

;; drivers. To do this properly, it requires some data related to ;;

;; the characteristics of the stepper motors such as stand by and ;;

;; movement current, acceleration, maximum and minimum velocities, ;;

;; etc. and, of course, the quantity of steps to be done; ;;

;; (NT(n)) and the sense or rotation (sgn(n)). ;;

;; A powerfull programming tool named circular addressing is used ;;

;; in this program. In this application it requires some particular ;;

;; considerations to be made related to the total of steps to be done ;;

;; by each motor. ;;

;; If SGN(n)=0 the motor moves from ms=0 part to ms=1 part of stroke. ;;

;; If SGN(n)=1 the motor moves from ms=1 part to ms=0 part of stroke. ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Profiles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

profiles

;Initialize Serial port as DSP-Driver compatible.

Page 246: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 229

call spi_m

;Direction Serial Port as DSP-Driver.

ldi @mem10204,ar2 ;AR2=10204h

ldi *ar2,r0

;Gral Initialization.

;Timer initialization.

ldi 0,r0

sti r0,@8020h

ldi @timer0,r0

sti r0,@8020h

ldi @period,r0

sti r0,@8028h

ldi @timer1,r0

sti r0,@8020h

;Primary Bus Control initialization: 3 WS

ldi @pbcr,r0

sti r0,@8064h

;Discharge RX Register.

ldi @804ch,r0 ;This is done in order to enable

;the next reception.

;VN(n), N(n) & NAC(n) Initialization.

;(Sets all N(n)).

;(Sets to VMIN all VN(n).

;Resets all NAC(n).

ldi @pointPER,ar4 ;Loads in AR4 the start of table Profiles.

ldi @pointerN,ar0 ;Loads in AR0 the start of Motor Group N.

ldi 0,r2

ldf 1,r1 ;Loads floating point ’1’ in R1.

ldf *+ar0(2),r0 ;Loads floating point VMIN in R0.

ldi 5,rc ;RC=5 ==> 6 times.

rptb ENDIV ;REPEATS 6 TIMES.

stf r0,*+ar4(18) ;VN(n) = VN(n).

sti r2,*+ar4(6) ;NAC(n)=0.

ENDIV stf r1,*ar4++ ;N(n)=1. AR4 = AR4 + 1.

;Stablish Imin for all motors (OUTCUR(n) Initialization).

;This block sets the value stored as IMIN(n) as the current to

;be applied to the motors. If the motor must execute any step movement,

;this value of current is modified to the required value.

addi 12,ar0 ;AR0 = Pointer of table IMIN.

ldi @poinOUTCUR,ar4 ;Pointer of table OUTCUR.

ldi 5,rc

rptb INICUR ;The instructions contained to INICUR

;are executed 6 times.

ldi *ar0++,r0 ;Loads the value of minimum current

;of the motor.

and 0fh,r0

INICUR sti r0,*ar4++ ;Stores the value in OUTCUR(n).

;Registers initialization (AR0, AR1, AR2, R7, R6, R5 initialization)

move ldi @pointPER,ar4 ;Loads in AR4 the start of table Profiles.

ldi 0,r0 ;Loads 0 in r0.

sti r0,@COUNT ;COUNT = 0.

;AR4 = first address of Profiles.

LDI @pointerN,AR0 ;Loads in AR0 the address of the pointer

Page 247: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 230

;to steps to be done.

LDI AR0,AR6

LDI @pointFIL,AR1 ;Loads the address of FIL(1) in AR1.

LDI @pointSEQ,AR2 ;Loads the pointer to SEQ(1) in AR2.

LDF *+ar6(5),R7 ;Loads E in R7.

LDF *+ar6(4),R6 ;Loads A*E in R6.

LDF *+ar6(3),R5 ;Loads VMAX in R5.

;After the registers have been initialized, the instructions contained to

;ENDMOV are executed 6 times, in order to stablish the new values of

;currents and sequences to be applied to each motor.

LDI 5,RC ;RC=5 ==> 6 TIMES.

ldi @pointerSEQ,AR3

RPTB ENDMOVE ;The instructions contained to ENDMOVE are

;executed 6 times.

LDI *AR3,AR7 ;AR7=PSEQ(n).

;NAC(n)<NT(n)?

LDI *+AR4(6),R0 ;Loads steps done by the motor, NAC(n) in R0.

CMPI *+AR0(6),R0 ;Compares total of steps with R0.

BNN ENDMOVE3 ;Jumps to ENDMOVE1 if no movement is required.

;X=E*N(n)*VN(n)

LDF *AR4,R3

MPYF3 R3,R7,R1 ;E*N(n)=>R1

MPYF *+AR4(18),R1 ;E*N(n)*VN(n)=>R1

;X<1?

CMPF 1,R1 ;R1-1

BND NOMOVE ;If E*N(n)*VN(n) < 1 jumps to NOMOVE (delayed)

;N(n)=N(n)+1.

LDF *AR4,R1 ;N(n)=N(n)+1.

ADDF 1,R1 ;

STF R1,*AR4 ;

;AR3=pointerSEQ

;AR7=*+AR3.

;If E*N(n)*VN(n)< 1 jumps to NOMOVE, having stored N(n) as N(n)+1.

;N(n)=1

LDF 1,R1 ;

STF R1,*AR4 ;N(n) = 1.

;NAC(n)=NAC(n)+1.

ADDI 1,R0 ;NAC(n)=NAC(n)+1.

STI R0,*+AR4(6) ;

;Obtain new sequence by circular addressing.

LDI 8,BK ;BK=8 to implement circular addressing.

LDI *+AR0(24),R0 ;Loads SGN(n) in R0.

BZ LEFT ;If SGN(n) is 0 jumps to left (not delayed).

LDI *AR7++(1)%,R0 ;AR7 points to the past seq.

LDI *AR7,R0 ;Loads new PSEQ(n) in R0.

br sigo

LEFT LDI *AR7--(1)%,R0 ;AR7 points to the new seq.

LDI *AR7,R0 ;Loads new PSEQ(n) in R0.

sigo STI AR7,*AR3 ;Stores new PSEQ(n) in PSEQ(n).

;Filtering.

NOMOVE LDI 6,BK ;BK=6 to implement circular addressing.

LDI *AR7,R0 ;Loads PSEQ(n) in R0.

AND *AR1,R0 ;’Filters’ the new SEQ(n).

Page 248: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 231

STI R0,*+AR4(38) ;Stores the new SEQ(n) in OUTSEQ(n).

;VN(n)<VMAX(n)?

CMPF *+AR4(18),R5 ;VMAX-VN(n).

BPD NOVMAX ;If VN(n)<VMAX jumps to NOVMAX (delayed).

LDI *+AR4(6),R0 ;Loads NAC(n) in R0.

LDI *+AR0(6),R1 ;Loads NT(n) in R1.

NOP ;Waits for the branch to be done.

;If VMAX-VN(n) > 0 jumps to NOVMAX.

;NAC(n)>=NT(n)-N1(n)?

SUBI R1,R0 ;Loads in R0 NAC(n)-NT(n).

ADDI *+AR4(12),R0 ;Now R0 contains NAC(n)-NT(n)+UPN(n).

BNND DOWN ;If NAC(n)-NT(n)+N1 >= 0 jumps to

;DOWN (delayed).

NOP ;Waits for the branch to be done.

NOP ;Waits for the branch to be done.

NOP ;Waits for the branch to be done.

;If NAC(n)-NT(n)+N1 >= 0 jumps to DOWN.

;Set I=IMAX,

BR CURRENT ;Jumps to CURRENT to set the value of

;current to be applied.

;NAC(n)<NT(n)/2?

NOVMAX ASH -1,R1 ;R1 is right-shifted to obtain NT(n)/2.

CMPI R1,R0 ;NAC(n)-NT(n)/2.

BND UP ;If NAC(n)-NT(n)/2<0 jumps to UP(delayed).

;VN(n)-A*E

DOWN LDF *+AR4(18),R4 ;Loads VN(n) in R4.

SUBF3 R6,R4,R1 ;VN(n)-A*E is loaded in R1.

LDF *+AR6(2),R3

;If NAC(n)-NT(n)/2<0 jumps to UP.

;VN(n)<VMIN(n)?

CMPF R3,R1 ;R1-VMIN.

BND CURRENT ;Jumps to CURRENT if R1<R3(Delayed).

;VN(n)=VMIN

STF R3,*+AR4(18) ;Stores VMIN as VN(n).

LDI *+AR4(6),R2 ;Loads NAC(n) in R2.

NOP ;Waits for the jump to be done.

;If VN(n)<VMIN jumps to CURRENT having stored VMIN as VN(n).

STF R1,*+AR4(18) ;Stores the new VN(n).

;Set I=IMAX,

BR CURRENT ;Jumps to CURRENT to set the value of

;current to be applied.

;VN(n)=VN(n)+A*E

UP ADDF *+AR6(4),R4 ;A*E+VN(n)=>R4.

STF R4,*+AR4(18) ;Stores the new VN(n).

;NUP(n)=NAC(n)

STI R0,*+AR4(12) ;NUP(n) = NAC(n).

;Set I=IMAX,

CURRENT LDI *+AR0(18),R0 ;Loads IMAX(n) in R0.

AND 0fh,R0

STI R0,*+AR4(44) ;Stores IMAX(n) in OUTCUR(n).

ENDMOVE0

ldi *AR1++(1)%,R0 ;AR1 = AR1 +1 (Circular).

ADDI 1,AR0

Page 249: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 232

ADDI 1,AR3

;n=n+1

ENDMOVE ADDI 1,AR4

;Build the words of sequences and currents to be transmited.

;Once the new values of sequences and currents have been stored in

;OUTSEQ(n) and OUTCUR(n), two groups of words containing this

;information must be built to be transmitted to the drivers. There

;names are SEQOUT(n) and CUROUT(n) respectively.

LDI @poinSEQOUT,AR1 ;Loads the pointer to SEQOUT in AR1.

LDI @poinENDFIL,AR4 ;AR4 = FIL(1). Points to table FIL(n).

LDI 0,R0 ;R0 is cleared to build SEQOUT.

LDI 0,R1 ;R1 is cleared to build CUROUT.

LDI 5,RC ;Loads 5 in RC.

RPTB ENDOR1 ;Repeats the instructions to ENDOR1 6 times.

OR *++AR4(1),R0 ;Charge of significative bits of OUTSEQ(n) &

OR *+AR4(6),R1 ;OUTCUR(n) in SEQOUT & CUROUT.

ENDOR1 ash 4,r1 ;Shifts to left because of motor order in word.

ash -4,r1 ;Shifts to the right for compensating the last

;left shifting.

or @MotionV,r0 ;Or secquence with MotionV (which contains the

;mask for good address.

sti r0,@9de6h ;Stores sequences of motors 1 to 6 in SEQOUT.

or @IlevelV,r1 ;Or currents with IlevelV (which contains the

;mask for good address.

sti r1,@9de7h ;Stores currents of motors 1 to 6 in CUROUT.

;Synchronization with 50 us.

synch ldi 800h,r0

tstb @8020h,r0

bz synch

;Timer is reset and beggins the new count.

ldi @timer1,r0

sti r0,@8020h

;Transmition CUROUT.

call PWAIT ;Wait state. In order to be sure that Serial Port

;Activity has finished.

ldi @9de7h,r0 ;Sends the second word to serial port, ADDRESS.

sti r0,@8048h

;State is ok?

; call WAITRX ;Wait state. In order to be sure that Serial Port

; ;Activity (Only Reception) has finished.

; ldi @804ch,r0 ;Store the received word in state.

; sti r0,@state1

; and @NOTOK,r0 ;Compare with mask notOK & notOK1.

; ;It is supposed that xor @NOTOK1,r0

; ;F=1 or SS=0 or SE=0 of each motor indicates

; ;a problem.

; bnz alarm ;notOK=00ddddddh, notOK1=00aaaaaah.

;Normal mode or Uplimit mode or Downlimit mode or group middle mode?

ldi @mode,r0

bz delay

cmpi 2,r0

bz uplimit

cmpi 3,r0

Page 250: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 233

bz downlimit

cmpi 4,r0

bz gr_mid

;Middle limit mode (mode=1), so it tests the change in MS bit.

call STATES

ash -1,r3

and 1,r3

call SGN

;end movement?

xor *ar2,r3

bnz finish

b delay

;Group Middle limit mode (moded=4), so it tests the

;change in MS bits of all motors.

gr_mid ldi @pointerN,ar5

addi 11,ar5

ldi 0,r0

sti r0,@MSN_c

ldi @state1,r0

and @patos,r0

xor @oldstate,r0

ldi 5,rc

rptb gr_mid_l1

ldi r0,r1

and 0fh,r1

bz gr_mid_l

ldi 0,r7

sti r7,*ar5--

;end movement?

;Increments MSN_count

ldi @MSN_c,r7

addi 1,r7

sti r7,@MSN_c

b gr_mid_l1

gr_mid_l subi 1,ar5

gr_mid_l1 ash -4,r0

;MSN_count=6?

ldi @MSN_c,r0

cmpi 6,r0

bz finish ;Go to end of routine.

;timeout??

ldi @MSN_to1,r0

subi 1,r0

bz finish

b delay

;Uplimit: Up limit mode (mode=2), so it tests ES bit.

uplimit call STATES

;end movement?

tstb 1,r3

bz finish

b delay

;downlimit: Down limit mode (mode=3), so it tests SS bit

downlimit call STATES

Page 251: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 234

;end movement?

tstb 4,r3

bz finish

;Delay: 10 us

delay rpts 150

nop

;Transmition MOTIONV.

call PWAIT

ldi @9de6h,r0

sti r0,@8048h

;All motors have finished its movements?

ldi 6,R0

cmpi @COUNT,R0

bne move

;NTs of group N are zeroed

call NTzero

profiles_e rets

ENDMOVE1

;Sets OUTCUR(n) to IMIN & OUTSEQ(n) to PSEQ(n),

;Holding the last step at the last I value (before NAC=NT ;comparation).

LDF *ar4,R3

MPYF3 R3,R7,R1 ;E*N(n)=>R1

MPYF *+AR4(18),R1;E*N(n)*VN(n)=>R1

CMPF 1,R1 ;R1-1

BND ENDMOVE2 ;If E*N(n)*VN(n) < 1 jumps to NOMOVE (delayed)

LDF *AR4,R1 ;N(n)=N(n)+1.

ADDF 1,R1 ;

STF R1,*AR4 ;

ENDMOVE3

;I is set to Imin and COUNT=COUNT+1.

LDI @COUNT,R0

ADDI 1,R0

STI R0,@COUNT

LDI *+AR0(12),R0 ;R0 = IMIN(n)

AND 0fh,R0

STI R0,*+AR4(44) ;OUTCUR(n) = IMIN(n)

;Prepares OUTSEQ(n) and OUTCUR(n). Return to the iteration (ENDMOVE0).

ENDMOVE2 CALL FILTERING ;OUTSEQ(n) = PSEQ(n) filtered.

b ENDMOVE0

;;;;;;;;;;;;;;;;;;;;;;;;;;;; END OF profiles ;;;;;;;;;;;;;;;;;;;;;;;;;;;

.data

stack .word 809fa1h ;Stack pointer.

mem10302 .word 10302h ;Position of the UART (reading) in the FPGA.

mem10300 .word 10300h ;Position of the UART (writing) in the FPGA.

pbcr .word 0bh ;Primary Bus Control Register: Hold and

;RDY disabled, 3 ws.

iof1 .word 0h ;I/O Flags Register: XF0 & XF1 are inputs.

pointerPC .word 809f9ch ;Pointer of memory block (in the DSP) where

;the read

;bytes are being stored. The word in 809f9c

;is command.

Page 252: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 235

mem10200 .word 10200h ;10200h is the address of xilinx transmition

;memory.

ANSWER .word 0h ;ANSWER: word used to send an asking of motor

;state to motor group N.

ffffff .word 0ffffffh ;Used in m1_1 subroutine.

e .float 2.144e-5 ;Iteration time.

pointerM .word 809bc4h ;pointer of motor memory block.

.bss pointerN,1 ;pointerN will be used by profiles. It’s

;updated in this routine.

.bss pointerSEQ,1 ;pointerSEQ will be used by profiles. It’s

;updated in this routine.

pSEQ .word 809de8h

.bss IlevelV,1 ;IlevelV will be used by profiles. It’s

;updated in this routine.

.bss MotionV,1 ;MotionV will be used by profiles. It’s

;updated in this routine.

mmm .word 78000000h ;for changing modifier of MotionV.

u2step .float 4.812 ;1u = 4,812 steps or 9.624 1/2steps.

;(new motors)

round .float 5.0e-1

.bss N,1

pointstate .word 809da4h ;pointer of states.

timer2 .word 2ffh ;Timer: mode pulse, internal CLKSRC, reset

;and start the timer.

Imask .word 2000000h ;Imask: It is the mask for good address

;and mode bits in Ilevel mode. CUROUT is ored

;with this mask.

to .word 100 ;Time out for reception of states.

;Time out= 50 us.

SPGC .word 808040h ;Address of SPGC.

.bss to1,1 ;For time out routine. It stores a zero

;value if there is a time out.

mask .word $ ;mask: is a variable local used for compare

;sucesives values of states with position

;zero.

patos .word 222222h ;patos: word used for maked mask

testbit .word 200000h

spgc0_m .word 2c035fh ;Reset of spgc.

spgc_m .word 0c2c035fh ;spgc:FSX is output, no Handshake,

;Intern. Tx. CLK,

;Extern. Rx CLK, Var. Data Transmition and

;Var. Data Reception Rate, Std. FSR and FSX (no contin.),

;CLKX, CLKR, DX, DR, FSX and FSR are active high,

;Transmitted word length 32 bits, Received word length

;24 bits. Timer Interruption Disabled, Interruptions Disabled.

fsx .word 111h ;FSX/DX/CLKX: FSX, DX and CLKX are all

;configured as serial port pins. Associated pins are

;valid only if the pins are configured as I/O pins

;and this is not our case.

fsr .word 111h ;FSR/DR/CLKR: FSR, DR and CLKR are all

;configured as serial port pins. Associated pins are

;valid only if the pins are configured as I/O pins and

;this is not our case.

Page 253: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 236

ticon .word 28ah ;Rec/Transm. Timer-Control Reg.: In

;both functions (XT & RT): timer is zeroed and

;begins incrementing, timer is not held, pulse

;mode is chosen, internal clock is used.

tiper .word 1 ;We need 10 Mbauds (@ Clk=40MHz), so

;timer period = 3.

.bss MSN_c,1 ;Count register used by MSN.

.bss n,1 ;n: motor number in N-motor group.

.bss oldstate,1 ;Used in MSN and profiles related

;to MSN.

sensor0 .word 809e48h ;sensor0: it is the first position of

;sensor memory.

acq0 .word 809f88h ;acq0: it is the first position of

;acquisition memory.

rc1 .word 1e8480h

spgc0_ad .word 10035fh ;Reset of Serial Port.

spgc_ad .word 0c10035fh ;SPGC:FSX is output, no Handshake,

;Intern. Transm. CLK,

;Extern. Reception CLK, Var. Data Transmition and

;Var. Reception Rate, Std. FSR and FSX (no contin.),

;CLKX, CLKR, DX, DR, FSX and FSR are active high,

;Transmitted word length 8 bits, Received word length

;16 bits. Timer Interruption Disabled, Interruptions

;Disabled.

mem10204 .word 10204h

pbcr1 .word 0ebh ; Primary Bus Control Register: Hold and

; RDY disabled, 7 ws.

chiche .word 0ffffh

pointPER .word 809db4h

poinOUTCUR .word 809de0h

pointFIL .word 809bb8h

pointSEQ .word 809ddah

poinSEQOUT .word 809de6h

poinENDFIL .word 809dd9h

COUNT .word 0h

.bss state1,1 ;STATE: here is stored the state which

;has been received from driver.

notOK .word 0ddddddh ;For comparing with state1. It is supposed

;that F=1 or SS=0 or SE=0 of each motor

;indicates a problem.

notOK1 .word 555555h ;For comparing with state1. It is supposed

;that F=1 or SS=0 or SE=0 of each motor

;indicates a problem.

notOK2 .word 888888h ;For comparing with state1. It is supposed

;that F=1 of each motor indicates a problem.

notOK3 .word 0h ;For comparing with state1. It is supposed

;that F=1 of each motor indicates a problem.

m100000 .word 100000

.bss mode,1

.bss NOTOK,1

.bss NOTOK1,1

.bss alarma,1 ;When it is not 0, there is a problem.

MSN_to .word 0c3500h ;Used in move to limits. Time out

Page 254: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 237

;value=800000

;That is a time out aprox 800000/2Vmax

.bss MSN_to1,1

period .word 268 ;This implies a period x(1/50MHz) = 21us

timer0 .word 3bfh

timer1 .word 3ffh

period1 .word 20000 ;This implies a 1 ms period (20000*4/40MHz)

ff .word 0ff000000h;For sending all 0’s as SEQOUT, so

;getting out from FAULT.

.sect "seqfil"

;Constants used by Profiles

;Half Step Mode

;The following list contains the squences used to excitate the step motors.

;This memory location must have its four LSBs equal

;for circular addressing

SEQ1 .word 99999999h ; 1001 1001 1001 1001 1001 1001 1001 1001

;SEQ2 .word 88888888h ; 1000 1000 1000 1000 1000 1000 1000 1000

SEQ3 .word 0CCCCCCCCh; 1100 1100 1100 1100 1100 1100 1100 1100

;SEQ4 .word 44444444h ; 0100 0100 0100 0100 0100 0100 0100 0100

SEQ5 .word 66666666h ; 0110 0110 0110 0110 0110 0110 0110 0110

;SEQ6 .word 22222222h ; 0010 0010 0010 0010 0010 0010 0010 0010

SEQ7 .word 33333333h ; 0011 0011 0011 0011 0011 0011 0011 0011

;SEQ8 .word 11111111h ; 0001 0001 0001 0001 0001 0001 0001 0001

SEQ1b .word 99999999h ; 1001 1001 1001 1001 1001 1001 1001 1001

SEQ3b .word 0CCCCCCCCh; 1100 1100 1100 1100 1100 1100 1100 1100

SEQ5b .word 66666666h ; 0110 0110 0110 0110 0110 0110 0110 0110

SEQ7b .word 33333333h ; 0011 0011 0011 0011 0011 0011 0011 0011

;The following list contains the ’filters’ used to build the words

;transmitted to the step motor drivers.

;This memory location must have its three LSBs equal to "0".

;for circular addressing.

FIL1 .word 00F00000h

FIL2 .word 000F0000h

FIL3 .word 0000F000h

FIL4 .word 00000F00h

FIL5 .word 000000F0h

FIL6 .word 0000000Fh

; The following list is used to store the addresses of the sequence being

; used to excitate each motor. By circular addressing, these pointers

; provide the next sequence for the respective step motors.

.sect "pseq"

PSEQ1_0 .word 809bb0h

Page 255: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 238

PSEQ2_0 .word 809bb0h

PSEQ3_0 .word 809bb0h

PSEQ4_0 .word 809bb0h

PSEQ5_0 .word 809bb0h

PSEQ6_0 .word 809bb0h

PSEQ1_1 .word 809bb0h

PSEQ2_1 .word 809bb0h

PSEQ3_1 .word 809bb0h

PSEQ4_1 .word 809bb0h

PSEQ5_1 .word 809bb0h

PSEQ6_1 .word 809bb0h

PSEQ1_2 .word 809bb0h

PSEQ2_2 .word 809bb0h

PSEQ3_2 .word 809bb0h

PSEQ4_2 .word 809bb0h

PSEQ5_2 .word 809bb0h

PSEQ6_2 .word 809bb0h

PSEQ1_3 .word 809bb0h

PSEQ2_3 .word 809bb0h

PSEQ3_3 .word 809bb0h

PSEQ4_3 .word 809bb0h

PSEQ5_3 .word 809bb0h

PSEQ6_3 .word 809bb0h

PSEQ1_4 .word 809bb0h

PSEQ2_4 .word 809bb0h

PSEQ3_4 .word 809bb0h

PSEQ4_4 .word 809bb0h

PSEQ5_4 .word 809bb0h

PSEQ6_4 .word 809bb0h

PSEQ1_5 .word 809bb0h

PSEQ2_5 .word 809bb0h

PSEQ3_5 .word 809bb0h

PSEQ4_5 .word 809bb0h

PSEQ5_5 .word 809bb0h

PSEQ6_5 .word 809bb0h

PSEQ1_6 .word 809bb0h

PSEQ2_6 .word 809bb0h

PSEQ3_6 .word 809bb0h

PSEQ4_6 .word 809bb0h

PSEQ5_6 .word 809bb0h

PSEQ6_6 .word 809bb0h

PSEQ1_7 .word 809bb0h

PSEQ2_7 .word 809bb0h

PSEQ3_7 .word 809bb0h

PSEQ4_7 .word 809bb0h

PSEQ5_7 .word 809bb0h

Page 256: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 239

PSEQ6_7 .word 809bb0h

PSEQ1_8 .word 809bb0h

PSEQ2_8 .word 809bb0h

PSEQ3_8 .word 809bb0h

PSEQ4_8 .word 809bb0h

PSEQ5_8 .word 809bb0h

PSEQ6_8 .word 809bb0h

PSEQ1_9 .word 809bb0h

PSEQ2_9 .word 809bb0h

PSEQ3_9 .word 809bb0h

PSEQ4_9 .word 809bb0h

PSEQ5_9 .word 809bb0h

PSEQ6_9 .word 809bb0h

PSEQ1_10 .word 809bb0h

PSEQ2_10 .word 809bb0h

PSEQ3_10 .word 809bb0h

PSEQ4_10 .word 809bb0h

PSEQ5_10 .word 809bb0h

PSEQ6_10 .word 809bb0h

PSEQ1_11 .word 809bb0h

PSEQ2_11 .word 809bb0h

PSEQ3_11 .word 809bb0h

PSEQ4_11 .word 809bb0h

PSEQ5_11 .word 809bb0h

PSEQ6_11 .word 809bb0h

PSEQ1_12 .word 809bb0h

PSEQ2_12 .word 809bb0h

PSEQ3_12 .word 809bb0h

PSEQ4_12 .word 809bb0h

PSEQ5_12 .word 809bb0h

PSEQ6_12 .word 809bb0h

PSEQ1_13 .word 809bb0h

PSEQ2_13 .word 809bb0h

PSEQ3_13 .word 809bb0h

PSEQ4_13 .word 809bb0h

PSEQ5_13 .word 809bb0h

PSEQ6_13 .word 809bb0h

PSEQ1_14 .word 809bb0h

PSEQ2_14 .word 809bb0h

PSEQ3_14 .word 809bb0h

PSEQ4_14 .word 809bb0h

PSEQ5_14 .word 809bb0h

PSEQ6_14 .word 809bb0h

PSEQ1_15 .word 809bb0h

PSEQ2_15 .word 809bb0h

Page 257: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 240

PSEQ3_15 .word 809bb0h

PSEQ4_15 .word 809bb0h

PSEQ5_15 .word 809bb0h

PSEQ6_15 .word 809bb0h

.end

Una vez depurado el programa se inicio con la etapa de pruebas de los perfiles

con aceleraciones no-constantes. A continuacion se listan las rutinas necesarias

para el accionamiento con otros perfiles de velocidad. Las mismas deben ser agre-

gadas al listado original, anteriormente presentado.

Para el accionamiento con un perfil con curva-S se agrega la rutina de inicia-

lizacion PROFINI y la rutina Profile cambian algunos detalles. Ası mismo, se

incorporan otras rutinas como INVF que realizacion operaciones matematicas

como la inversa de un numero en coma flotante.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; curva-S ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;; Custom initilization, here we must save C3,C4,C5 y C6 registers ;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

PROFINI pushf r0

pushf r4

pushf r6

pushf r7

; calculo nuestro Nt

; Vmax/(Nt) =1/T

ldf @9bc7h, r0 ; cargo la velocidad maxima (float) en R0

ldf @9bc6h, r7 ; cargo la velocidad minima (float) en R7

subf r7, r0 ; R0-R7 --> R0

MPYF @9bc9h, r0 ; multiplico por e

mpyf 3.0, r0

CALL INVF

mpyf @9bc8h, r0 ; multiplico por A*e

stf r0, @9dd2h ; dejo el C7 en @9dd2h

;C7*(A*e)

mpyf @9bc8h, r0

stf r0, @9dd3h ; nuevo A*e

;C7*(e)

ldf @9dd2h, r0

mpyf @9bc9h, r0

stf r0, @9dd4h ; nuevo e

Page 258: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 241

;C4 = -32*(A*e)*e/T^2

ldf @9dd3h, r7 ;*+ar0(4)

mpyf -32.0, r7

mpyf @9dd4h, r7 ;*+ar0(5)

stf r7, @9dcdh ;*+ar5(25)

;C3 = 8*(A*e)/T + 16*(A*e)*e/T^2

ldf @9dd3h, r7 ;*+ar0(4)

mpyf 8.0, r7 ;

ldf @9dd3h, r6 ;*+ar0(4)

mpyf 16.0, r6 ;

mpyf @9dd4h, r6 ;*+ar0(5)

addf r6, r7 ;

stf r7, @9dcch ;*+ar5(24)

;C5 = 32*(A*e)*e/T^2

ldf @9dd3h, r7 ;*+ar0(4)

mpyf 32.0, r7

mpyf @9dd4h, r7 ;*+ar0(5)

stf r7, @9dceh ;*+ar5(26)

;C6 = -16*(A*e)*e/T^2 - 8*(A*e)/T

ldf @9dd3h, r7 ;*+ar0(4)

mpyf -16.0, r7

mpyf @9dd4h, r7 ;*+ar0(5)

ldf @9dd3h, r6 ;*+ar0(4)

mpyf -8.0, r6

addf r6, r7

stf r7, @9dcfh ;*+ar5(27)

; ;sobreescribo kmax = Kmax/2

; ldi @9dd5h, r7 ; dejo el Kmax en R7

; ash -1, r7 ; divido por dos (ya que count=-1 es menor que cero)

; sti r7, @9dd5h ; dejo en Kmax @9dd5h

; ;sobreescribo Nt = Nt*2

; ldi @9bcah, r7 ; dejo el Nt en R7

; ash 1, r7 ; multiplico por dos

; sti r7, @9bcah ; dejo en Kmax @9bcah

;inicializo los contadores

LDI 0, R7 ; Loads 0 in r7.

STI R7, @9dd0h ; limpio el k *+AR5(28)

LDI 1, R7 ; Loads 1 in r7.

STI R7, @9dd5h ; inicializo el flag con 00001

LDF 0, R7 ; Loads 0 in r7.

STF R7, @9dd1h ; limpio el a(k-1) *+AR5(29)

popf r7

popf r6

popf r4

popf r0

PROFINI_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Page 259: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 242

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; m3_4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Memory Updating & Parameterization.

m3_4 ldi @pointerM,ar0 ;AR0=pointer of motor memory.

ldi @9f9dh,r2 ;R2=N:number of motor group.

mpyi 30,r2 ;R2=motor group memory pointer

;(relative to the pointer of all

;motor memory)

addi r2,ir0 ;IR0 = position of Vmin of the motor

;group N.

ldi @9f9fh,r0 ;High part of data in R0.

ash 8,r0 ;R0 is shifted to the left 8 bits.

or @9f9eh,r0 ;R0 = datalow + datahigh shifted.

;So R0 = data.

ash 1,r0 ;R0 is multiplied by 2 because motion

;is in 1/2 steps.

float r0,r0 ;It is input as an integer but is

;treated as a floating point data.

stf r0,*++ar0(ir0) ;Vmin (or Vmax) is stored in position

; of Vmin of group N.

endm3_4 rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; End m3_4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INVF ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Description: Inverse of Floating-point number.

; Inputs: Floating-point number v in r0.

; Output: 1/float into r0.

INVF pushf r1

pushf r2

pushf r3

ldf r0,r3 ;v is saved for later.

absf r0 ;The algorithm uses v = module[v]

;Extract the exponent of v.

pushf r0

pop r1

ash -24,r1 ;The 8 lsbs of R1 contain the exponent of v.

;x[0] formation is given the exponent of v.

negi r1

subi 1,r1 ;Now we have -e-1, teh exponent of x[0].

ash 24,r1

push r1

popf r1 ;Now R1=x[0]=1.0*2**(-e-1)

;Now the iteration begin.

ldi 3,rc

rptb inverse_l

mpyf r1,r0,r2 ;R2=v*x[0]

subrf 2.0,r2 ;R2=2.0-v*x[0]

inverse_l mpyf r2,r1 ;R1=x[1]=x[0]*(2.0-v*x[0])

rnd r1 ;This minimizes error in the LSBs.

;For the last iteration we use the formulation:

;x[5]=(x[4]*(1.0-(v*x[4])))+x[4]

mpyf r1,r0,r2 ;R2=v*x[4]=1.0..01..=>1

subrf 1.0,r2 ;R2=1.0-v*x[4]=0.0..01...=>0

Page 260: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 243

mpyf r1,r2 ;R2=x[4]*(1.0-v*x[4])

addf r2,r1 ;R2=x[5]=x[4]*(1.0-(v*x[4])))+x[4]

rnd r1,r0 ;Round since this is followed by a MPYF.

;Now the case of v < 0 is handled.

negf r0,r2

ldf r3,r3 ;This sets condition flags.

ldfn r2,r0 ;If v<0, then R0=-R0.

pop r3

pop r2

pop r1

rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;END OF INVF ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Profiles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;; THE FOLLOWING PROGRAM MAKES POSSIBLE THE SIMULTANEOUS ;;;;;;;;;

;;; MOVEMENT OF 6 STEPPER MOTORS WITH THE IMPLEMENTATION OF THE SPEED ;;

;;;;;;;;;; VARIATIONS SPECIFIED BY THE RESPECTIVE PARAMETERS ;;;;;;;;;;;

;; This routine determines and transmits the words to the motor ;;

;; drivers. To do this properly, it requires some data related to ;;

;; the characteristics of the stepper motors such as stand by and ;;

;; movement current, acceleration, maximum and minimum velocities, ;;

;; etc. and, of course, the quantity of steps to be done; ;;

;; (NT(n)) and the sense or rotation (sgn(n)). ;;

;; A powerfull programming tool named circular addressing is used ;;

;; in this program. In this application it requires some particular ;;

;; considerations to be made related to the total of steps to be done ;;

;; by each motor. ;;

;; If SGN(n)=0 the motor moves from ms=0 part to ms=1 part of stroke. ;;

;; If SGN(n)=1 the motor moves from ms=1 part to ms=0 part of stroke. ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Profiles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

profiles

;Initialize Serial port as DSP-Driver compatible.

call spi_m

;Direction Serial Port as DSP-Driver.

ldi @mem10204,ar2 ;AR2=10204h

ldi *ar2,r0

;Gral Initialization.

;Timer initialization.

ldi 0,r0

sti r0,@8020h

ldi @timer0,r0

sti r0,@8020h

ldi @period,r0

sti r0,@8028h

ldi @timer1,r0

sti r0,@8020h

;Primary Bus Control initialization: 3 WS

ldi @pbcr,r0

sti r0,@8064h

;Discharge RX Register.

ldi @804ch,r0 ;This is done in order to enable

;the next reception.

Page 261: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 244

;VN(n), N(n) & NAC(n) Initialization.

;(Sets all N(n)).

;(Sets to VMIN all VN(n).

;Resets all NAC(n).

ldi @pointPER,ar4 ;Loads in AR4 the start of table Profiles.

ldi @pointerN,ar0 ;Loads in AR0 the start of Motor Group N.

ldi 0,r2

ldf 1,r1 ;Loads floating point ’1’ in R1.

ldf *+ar0(2),r0 ;Loads floating point VMIN in R0.

ldi 5,rc ;RC=5 ==> 6 times.

rptb ENDIV ;REPEATS 6 TIMES.

stf r0,*+ar4(18) ;VN(n) = VN(n).

sti r2,*+ar4(6) ;NAC(n)=0.

ENDIV stf r1,*ar4++ ;N(n)=1. AR4 = AR4 + 1.

call PROFINI ; we call the custom initilization

;Stablish Imin for all motors (OUTCUR(n) Initialization).

;This block sets the value stored as IMIN(n) as the current to

;be applied to the motors. If the motor must execute any step movement,

;this value of current is modified to the required value.

addi 12,ar0 ;AR0 = Pointer of table IMIN.

ldi @poinOUTCUR,ar4 ;Pointer of table OUTCUR.

ldi 5,rc

rptb INICUR ;The instructions contained to INICUR

;are executed 6 times.

ldi *ar0++,r0 ;Loads the value of minimum current

;of the motor.

and 0fh,r0

INICUR sti r0,*ar4++ ;Stores the value in OUTCUR(n).

;MENOR TIEMPO DE ITERACION.

;AGREGADO DE: SET I=IMAX Y TX CUROUT. EL OBJETIVO ES ENVIAR LA I AQUI

;Y NO DENTRO DE LA ITERACION LO QUE DEMANDABA MAS TIEMPO DE ITERACION.

;SET I=IMAX

ldi @f00000,r0

or @IlevelV,r0

sti r0,@9de7h

;TX CUROUT

call PWAIT ;Wait state. In order to be sure that Serial Port

;Activity has finished.

ldi @9de7h,r0 ;Sends the second word to serial port, ADDRESS.

sti r0,@8048h

;FIN MENOR TIEMPO DE ITERACION.

;Registers initialization (AR0, AR1, AR2, R7, R6, R5 initialization)

move ldi @pointPER,ar4 ;Loads in AR4 the start of table Profiles.

ldi 0,r0 ;Loads 0 in r0.

sti r0,@COUNT ;COUNT = 0.

;AR4 = first address of Profiles.

LDI @pointerN,AR0 ;Loads in AR0 the address of the pointer

;to steps to be done.

LDI AR0,AR6

LDI @pointFIL,AR1 ;Loads the address of FIL(1) in AR1.

LDI @pointSEQ,AR2 ;Loads the pointer to SEQ(1) in AR2.

Page 262: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 245

LDF *+ar6(5),R7 ;Loads E in R7.

LDF *+ar6(4),R6 ;Loads A*E in R6.

LDF *+ar6(3),R5 ;Loads VMAX in R5.

;After the registers have been initialized, the instructions contained to

;ENDMOV are executed 6 times, in order to stablish the new values of

;currents and sequences to be applied to each motor.

LDI 5,RC ;RC=5 ==> 6 TIMES.

ldi @pointerSEQ,AR3

RPTB ENDMOVE ;The instructions contained to ENDMOVE are

;executed 6 times.

LDI *AR3,AR7 ;AR7=PSEQ(n).

;NAC(n)<NT(n)?

LDI *+AR4(6),R0 ;Loads steps done by the motor, NAC(n) in R0.

CMPI *+AR0(6),R0 ;Compares total of steps with R0.

BNN ENDMOVE3 ;Jumps to ENDMOVE1 if no movement is required.

;X=E*N(n)*VN(n)

LDF *AR4,R3

MPYF3 R3,R7,R1 ;E*N(n)=>R1

MPYF *+AR4(18),R1 ;E*N(n)*VN(n)=>R1

;X<1?

CMPF 1,R1 ;R1-1

BND NOMOVE ;If E*N(n)*VN(n) < 1 jumps to NOMOVE (delayed)

;N(n)=N(n)+1.

LDF *AR4,R1 ;N(n)=N(n)+1.

ADDF 1,R1 ;

STF R1,*AR4 ;

;AR3=pointerSEQ

;AR7=*+AR3.

;If E*N(n)*VN(n)< 1 jumps to NOMOVE, having stored N(n) as N(n)+1.

;N(n)=1

LDF 1,R1 ;

STF R1,*AR4 ;N(n) = 1.

;NAC(n)=NAC(n)+1.

ADDI 1,R0 ;NAC(n)=NAC(n)+1.

STI R0,*+AR4(6) ;

;Obtain new sequence by circular addressing.

LDI 8,BK ;BK=8 to implement circular addressing.

LDI *+AR0(24),R0 ;Loads SGN(n) in R0.

BZ LEFT ;If SGN(n) is 0 jumps to left (not delayed).

LDI *AR7++(1)%,R0 ;AR7 points to the past seq.

LDI *AR7,R0 ;Loads new PSEQ(n) in R0.

br sigo

LEFT LDI *AR7--(1)%,R0 ;AR7 points to the new seq.

LDI *AR7,R0 ;Loads new PSEQ(n) in R0.

sigo STI AR7,*AR3 ;Stores new PSEQ(n) in PSEQ(n).

;Filtering.

;k = k + 1

NOMOVE PUSHF R6

LDI @9dd0h, R6 ; k *+AR5(28)

ADDI 1,R6 ; k+1.

STI R6, @9dd0h ; *+AR5(28)

;hay que tener cuidado!!!!!

POPF R6

Page 263: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 246

;Filtering.

;NOMOVE LDI 6,BK ;BK=6 to implement circular addressing.

LDI 6,BK ;BK=6 to implement circular addressing.

LDI *AR7,R0 ;Loads PSEQ(n) in R0.

AND *AR1,R0 ;’Filters’ the new SEQ(n).

STI R0,*+AR4(38) ;Stores the new SEQ(n) in OUTSEQ(n).

;VN(n)<VMAX(n)?

CMPF *+AR4(18),R5 ;VMAX-VN(n).

; BRD NOVMAX ; PARA DEBUG!!!!!!!!!!!!

BPD NOVMAX ;If VN(n)<VMAX jumps to NOVMAX (delayed).

LDI *+AR4(6),R0 ;Loads NAC(n) in R0.

LDI *+AR0(6),R1 ;Loads NT(n) in R1.

NOP ;Waits for the branch to be done.

;If VMAX-VN(n) > 0 jumps to NOVMAX.

;NAC(n)>=NT(n)-N1(n)?

SUBI R1,R0 ;Loads in R0 NAC(n)-NT(n).

ADDI *+AR4(12),R0 ;Now R0 contains NAC(n)-NT(n)+UPN(n).

BNND DOWN ;If NAC(n)-NT(n)+N1 >= 0 jumps to DOWN (delayed).

NOP ;Waits for the branch to be done.

NO ;Waits for the branch to be done.

NOP ;Waits for the branch to be done.

;If NAC(n)-NT(n)+N1 >= 0 jumps to DOWN.

;Set I=IMAX,

pushf r7 ; espero estar en la planicie

LDI 0,r7

STI r7, @9dd0h ;limpio el k, es decir k=0.

LDF 0,r7

STF R7, @9dd1h ;limpio la aceleracion : a(k-1)

popf r7

BR CURRENT ;Jumps to CURRENT to set the value of

;current to be applied.

;NAC(n)<NT(n)/2?

NOVMAX ASH -1,R1 ;R1 is right-shifted to obtain NT(n)/2.

CMPI R1,R0 ;NAC(n)-NT(n)/2.

BND UP ;If NAC(n)-NT(n)/2<0 jumps to UP(delayed).

NOP

NOP

NOP

;calculo de la aceleracion, DOWN

DOWN pushf r7

LDI @9dd5h, R7 ; C5 *+AR5(26)

SUBI 1,R7

STI R7, @9dd5h

BZ AUTOLIM

BR NOFIRST

;autolimpiante...solo si es la primera vez que entro a DOWN

AUTOLIM LDI 0,r7

STI r7, @9dd0h ;limpio el k, es decir k=0.

LDF 0,r7

STF R7, @9dd1h ;limpio la aceleracion : a(k-1)

NOFIRST LDF @9dceh, R6 ; C5 *+AR5(26)

float @9dd0h, R7

MPYF R7, R6 ; C5*k *+AR5(28)

Page 264: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 247

ADDF @9dcfh, R6 ; C6 *+AR5(27)

ADDF @9dd1h, R6 ; a(k-1) *+AR5(29)

STF R6, @9dd1h ; guardo la aceleracion actual para

; la proxima iteracion

mpyf @9bc9h, R6 ; multiplico por e *+AR0(5)

;el resultado, que queda en R6, se usa...

popf r7

;VN(n)-A*E

;DOWN LDF *+AR4(18),R4 ;Loads VN(n) in R4.

LDF *+AR4(18),R4 ;Loads VN(n) in R4.

; SUBF3 R6,R4,R1 ;VN(n)-A*E is loaded in R1.

ADDF3 R6,R4,R1 ;VN(n)+A*E is loaded in R1.

LDF *+AR6(2),R3 ;carga la Vmin

;If NAC(n)-NT(n)/2<0 jumps to UP.

;VN(n)<VMIN(n)?

CMPF R3,R1 ;R1-VMIN.

BND CURRENT ;Jumps to CURRENT if R1<R3(Delayed).

;VN(n)=VMIN

STF R3, @9DC6h ;Stores VMIN as VN(n).

LDI *+AR4(6),R2 ;Loads NAC(n) in R2.

NOP ;Waits for the jump to be done.

;If VN(n)<VMIN jumps to CURRENT having stored VMIN as VN(n).

STF R1, @9DC6h ;Stores the new VN(n).

;Set I=IMAX,

BR CURRENT ;Jumps to CURRENT to set the value of

;current to be applied.

;calculo de la aceleracion, UP

UP PUSHF R7

LDF @9dcdh, R7 ; LDF *+AR5(25), R7

float @9dd0h, R6

MPYF R7, R6 ; C4*k MPYF *+AR5(28), R7

ADDF @9dcch, R6 ; C3 ADDF *+AR5(24), R7

ADDF @9dd1h, R6 ; a(k-1) *+AR5(29), R7

STF R6, @9dd1h ; guardo la aceleracion actual para la

; proxima iteracion

mpyf @9bc9h, R6 ; multiplico por e

; mpyf *+AR4(), R6, y entrego la aceleracion en R6

POPF R7

;VN(n)=VN(n)+A*E

;UP ADDF *+AR6(4),R4 ;A*E+VN(n)=>R4.

LDF *+AR4(18),R4 ; levanta de memoria Vn --> R4.

; ADDF *+AR6(4),R4 ;A*E+VN(n)=>R4.

ADDF R6, R4 ;A*E+VN(n)=>R4.

STF R4,*+AR4(18) ;Stores the new VN(n).

;NUP(n)=NAC(n)

STI R0,*+AR4(12) ;NUP(n) = NAC(n).

;Set I=IMAX,

;MENOR TIEMPO DE ITERACION.

;3 PROXIMAS INSTRUCCIONES ELIMINADAS SOLO AL EFECTO DE REDUCIR EL

;TIEMPO DE ITERACION

CURRENT

Page 265: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 248

; LDI *+AR0(18),R0 ;Loads IMAX(n) in R0.

; AND 0fh,R0

; STI R0,*+AR4(44) ;Stores IMAX(n) in OUTCUR(n).

;FIN MENOR TIEMPO DE ITERACION.

ENDMOVE0

ldi *AR1++(1)%,R0 ;AR1 = AR1 +1 (Circular).

ADDI 1,AR0

ADDI 1,AR3

;n=n+1

ENDMOVE ADDI 1,AR4

;Build the words of sequences and currents to be transmited.

;Once the new values of sequences and currents have been stored in OUTSEQ(n)

;and OUTCUR(n), two groups of words containing this information must be built

;to be transmitted to the drivers. There names are SEQOUT(n) and CUROUT(n)

;respectively.

LDI @poinSEQOUT,AR1 ;Loads the pointer to SEQOUT in AR1.

LDI @poinENDFIL,AR4 ;AR4 = FIL(1). Points to table FIL(n).

LDI 0,R0 ;R0 is cleared to build SEQOUT.

LDI 0,R1 ;R1 is cleared to build CUROUT.

LDI 5,RC ;Loads 5 in RC.

RPTB ENDOR1 ;Repeats the instructions to ENDOR1 6 times.

OR *++AR4(1),R0 ;Charge of significative bits of OUTSEQ(n) &

OR *+AR4(6),R1 ;OUTCUR(n) in SEQOUT & CUROUT.

ENDOR1 ash 4,r1 ;Shifts to left because of motor order in word.

ash -4,r1 ;Shifts to the right for compensating the last

;left shifting.

or @MotionV,r0 ;Or secquence with MotionV (which contains the

;mask for good address.

sti r0,@9de6h ;Stores sequences of motors 1 to 6 in SEQOUT.

;MENOR TIEMPO DE ITERACION.

;PROXIMAS DOS INSTRUCCIONES ELIMINADAS PARA REDUCIR EL TIEMPO DE ITERACION.

; or @IlevelV,r1 ;Or currents with IlevelV (which contains the

; ;mask for good address.

;FIN MENOR TIEMPO DE ITERACION.

sti r1,@9de7h ;Stores currents of motors 1 to 6 in CUROUT.

;Synchronization with 50 us.

synch ldi 800h,r0

tstb @8020h,r0

bz synch

;Timer is reset and beggins the new count.

ldi @timer1,r0

sti r0,@8020h

;Transmition CUROUT.

;

; 3 PROXIMAS INSTRUCCIONES ELIMINADAS SOLO AL EFECTO DE REDUCIR

; EL TIEMPO DE ITERACION

; call PWAIT ;Wait state. In order to be sure that Serial Port

;Activity has finished.

; ldi @9de7h,r0 ;Sends the second word to serial port, ADDRESS.

; sti r0,@8048h

;FIN MENOR TIEMPO DE ITERACION.

;State is ok?

; call WAITRX ;Wait state. In order to be sure that Serial Port

Page 266: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 249

; ;Activity (Only Reception) has finished.

; ldi @804ch,r0 ;Store the received word in state.

; sti r0,@state1

; and @NOTOK,r0 ;Compare with mask notOK & notOK1. It is supposed that

; xor @NOTOK1,r0 ;F=1 or SS=0 or SE=0 of each motor indicates a problem.

; bnz alarm ;notOK=00ddddddh, notOK1=00aaaaaah.

;Normal mode or Uplimit mode or Downlimit mode or group middle mode?

ldi @mode,r0

bz delay

cmpi 2,r0

bz uplimit

cmpi 3,r0

bz downlimit

cmpi 4,r0

bz gr_mid

;Middle limit mode (mode=1), so it tests the change in MS bit.

call STATES

ash -1,r3

and 1,r3

call SGN

;end movement?

xor *ar2,r3

bnz finish

b delay

;Group Middle limit mode (moded=4), so it tests the change in MS bits of all motors.

gr_mid ldi @pointerN,ar5

addi 11,ar5

ldi 0,r0

sti r0,@MSN_c

ldi @state1,r0

and @patos,r0

xor @oldstate,r0

ldi 5,rc

rptb gr_mid_l1

ldi r0,r1

and 0fh,r1

bz gr_mid_l

ldi 0,r7

sti r7,*ar5--

;end movement?

;Increments MSN_count

ldi @MSN_c,r7

addi 1,r7

sti r7,@MSN_c

b gr_mid_l1

gr_mid_l subi 1,ar5

gr_mid_l1 ash -4,r0

;MSN_count=6?

ldi @MSN_c,r0

cmpi 6,r0

bz finish ;Go to end of routine.

;timeout??

ldi @MSN_to1,r0

Page 267: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 250

subi 1,r0

bz finish

b delay

;Uplimit: Up limit mode (mode=2), so it tests ES bit.

uplimit call STATES

;end movement?

tstb 1,r3

bz finish

b delay

;downlimit: Down limit mode (mode=3), so it tests SS bit

downlimit call STATES

;end movement?

tstb 4,r3

bz finish

;MENOR TIEMPO DE ITERACION.

;DELAY ELIMINADO PARA REDUCIR EL TIEMPO DE ITERACION.

;Delay: 10 us

delay

; rpts 150

; nop

;FIN MENOR TIEMPO DE ITERACION.

;Transmition MOTIONV.

call PWAIT

ldi @9de6h,r0

sti r0,@8048h

;All motors have finished its movements?

ldi 6,R0

cmpi @COUNT,R0

bne move

;A CONTINUACION (SET I=IMIN & TX CUROUT) SON SOLO PARTE DE LA MANIOBRA

;PARA REDUCIR EL TIEMPO DE ITERACION.

;SET I=IMIN

ldi @IlevelV,r0

sti r0,@9de7h

;TX CUROUT

call PWAIT ;Wait state. In order to be sure that Serial Port

;Activity has finished.

ldi @9de7h,r0 ;Sends the second word to serial port, ADDRESS.

sti r0,@8048h

;NTs of group N are zeroed

call NTzero

profiles_e rets

ENDMOVE1

;Sets OUTCUR(n) to IMIN & OUTSEQ(n) to PSEQ(n),

;Holding the last step at the last I value (before NAC=NT ;comparation).

LDF *ar4,R3

MPYF3 R3,R7,R1 ;E*N(n)=>R1

MPYF *+AR4(18),R1 ;E*N(n)*VN(n)=>R1

CMPF 1,R1 ;R1-1

BND ENDMOVE2 ;If E*N(n)*VN(n) < 1 jumps to NOMOVE (delayed)

LDF *AR4,R1 ;N(n)=N(n)+1.

ADDF 1,R1 ;

Page 268: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 251

STF R1,*AR4 ;

ENDMOVE3 ;I is set to Imin and COUNT=COUNT+1.

LDI @COUNT,R0

ADDI 1,R0

STI R0,@COUNT

LDI *+AR0(12),R0 ;R0 = IMIN(n)

AND 0fh,R0

STI R0,*+AR4(44) ;OUTCUR(n) = IMIN(n)

;Prepares OUTSEQ(n) and OUTCUR(n). Return to the iteration (ENDMOVE0).

ENDMOVE2 CALL FILTERING ;OUTSEQ(n) = PSEQ(n) filtered.

b ENDMOVE0

;;;;;;;;;;;;;;;;;;;;;;;;;;; END OF profiles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Para un accionamiento con un perfil de velocidad parabolico solo debe inter-

cambiarse la rutina de inicializacion PROFINI con respecto al listado anterior.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; curva-S ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;; Custom initilization, here we must save C3,C4,C5 y C6 registers ;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

PROFINI pushf r0

pushf r4

pushf r6

pushf r7

; calculo nuestro Nt

; Vmax/(Nt) =1/T

ldf @9bc7h, r0 ; cargo la velocidad maxima (float) en R0

ldf @9bc6h, r7 ; cargo la velocidad minima (float) en R7

subf r7, r0 ; R0-R7 --> R0

MPYF @9bc9h, r0 ; multiplico por e

mpyf 4.0, r0

CALL INVF

mpyf @9bc8h, r0 ; multiplico por A*e

stf r0, @9dd2h ; dejo el C7 en @9dd2h

;C7*(A*e)

mpyf @9bc8h, r0

stf r0, @9dd3h ; nuevo A*e

;C7*(e)

ldf @9dd2h, r0

mpyf @9bc9h, r0

stf r0, @9dd4h ; nuevo e

;C4 = -32*(A*e)*e/T^2

ldf 0.0, r7 ;*+ar0(4)

stf r7, @9dcdh ;*+ar5(25)

Page 269: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 252

;C3 = 8*(A*e)/T + 16*(A*e)*e/T^2

ldf @9dd3h, r7 ;*+ar0(4)

mpyf 2.0, r7 ;

stf r7, @9dcch ;*+ar5(24)

;C5 = 32*(A*e)*e/T^2

ldf 0.0, r7 ;*+ar0(4)

stf r7, @9dceh ;*+ar5(26)

;C6 = -16*(A*e)*e/T^2 - 8*(A*e)/T

ldf @9dd3h, r7 ;*+ar0(4)

mpyf 2.0, r7 ;

stf r7, @9dcfh ;*+ar5(27)

;inicializo los contadores

LDI 0, R7 ; Loads 0 in r7.

STI R7, @9dd0h ; limpio el k *+AR5(28)

LDI 1, R7 ; Loads 1 in r7.

STI R7, @9dd5h ; inicializo el flag con 00001

;aceleracion inicial a(k-1)

LDF @9bc8h, R7 ; Loads A*e in r7.

LDF @9bc9h, R0 ; Loads e in r.

CALL INVF

MPYF R0, R7

STF R7, @9dd1h ; Inicializo el a(k-1) *+AR5(29)

popf r7

popf r6

popf r4

popf r0

PROFINI_e rets

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Page 270: Tesis_Gonzalez_Sergio.pdf

Apendice C. Software para el prototipo experimental 253

Referencias

Carrica, D. O. and Gonzalez, S. A. (1999). Algoritmo eficiente para la generacionde perfiles de velocidad en el accionamiento simultaneo de multiples motorespaso a paso. In ANALES VIII Reunion de Trabajo en Procesamiento de laInformacion y Control, RPIC’99, volume 1, pages 118–122, Mar del Plata,Argentina. Facultad de Ingenieria, U.N.M.d.P.

Texas Instruments (1986). Digital signal processing applications with the TMS320family.

Texas Instruments (1997). TMS320C3x user’s guide. SPRU031E revision L2558539-9761.

Page 271: Tesis_Gonzalez_Sergio.pdf

Apendice D

Desarrollos en FPGA

A continuacion se presentan los esquematicos asociados al nuevo algoritmo

implementado en hardware. Para este caso se uso la FPGA del fabricante Xilinx

XC4006-3 y el entorno integrado de diseno para la misma es el Xilinx Foundation

Series 3.19i.

254

Page 272: Tesis_Gonzalez_Sergio.pdf

Apen

dice

D.

Desarrollos

enFP

GA

2551

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

A A

B B

C C

D D

E E

F F

G G

H H

Xilinx Corporation

2100 Logic Drive

San Jose, CA 95124

Project: PERFIL2K

Macro: STEPGENF

Date: 6/1/00

Date Last Modified: 6/5/00

H5

COMP24

V[15:8]

V[31:16] CMP

H10

PARAMETER

P13

P14

P15

VEL11

VEL12

VEL13

VEL14

NTOT[15:0]

VMAX[15:0]

VMIN[15:0]INV

H3

OUTPUTS

A

B

C

D

VCC

CB16CE

C

CE CEO

CLR

Q[15:0]

TC

M4_1ED0

D1

D2

D3

E

O

S0

S1

PERFGENB

ND2[15:0]

VMAX[15:0]

CLR1

LE

VMIN[15:0]

CLK1

CLK2

CLR

NTOT[15:0]

FIN

PERF[15:0]

H15

INPUTS

ACEL0

ACEL1

CLK

CLR

P13

P14

P15

VEL11

VEL12

VEL13

VEL14

H14

INDEXER

CLK

CLKDIV3

CLR

CMP STEPCLK

NFIN

RESET

Y[15:0]

X[15:0]

CLK

PO[31:0]

H8

INIT

CLK

CLR

SCE CLKDIV[15:0]

CE2

LE

NOR2B1

H13

CONFORMADOR

FIN

NFIN

STEPCLK A

B

C

D

GND

VMAX[15:0]

VMIN[15:0]

PGEN[15:0]

NTOT[15:0]

GND,NTOT[15:1]

N[15:0]

V[15:8]

V[31:0]

V[31:16]

CLKDIV[15:0]

FIN

VCC

STEPCLK

CLR

CLK

CLR

LE

CLK

VCC

CLKDIV10

CLKDIV3

CLKDIV11

CLKDIV12

CLKDIV13

STEPCLK

GND

CLKDIV4

VCC

CLKDIV3

CLKDIV4

CLR

STEPCLK

NFIN

FIN

NFIN

LECLR

CLK

CMP

NFIN

Page 273: Tesis_Gonzalez_Sergio.pdf

Apen

dice

D.

Desarrollos

enFP

GA

256

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

A A

B B

C C

D D

E E

F F

G G

H H

Xilinx Corporation

2100 Logic Drive

San Jose, CA 95124

Project: PROFILE

Macro: PERFGENB

Date: 6/5/00

Date Last Modified: 6/5/00

OR2

CB16CE

C

CE CEO

CLR

Q[15:0]

TC

COMPM16

A[15:0]

B[15:0]

GT

LT

CB16CE

C

CE CEO

CLR

Q[15:0]

TC

VCC

AND2

NOR2

COMPM16

A[15:0]

B[15:0]

GT

LT

COMP16

A[15:0]

B[15:0]

EQ

COMPMC16

A[15:0]

B[15:0]

GT

LT

NOR2

CB16CLED

C

CE CEO

CLR

D[15:0]

L

Q[15:0]

TC

UP

INV

AND2

AND2

AND2

GND

ADSU16

A[15:0]

ADD

B[15:0]

CI

CO

OFL

S[15:0]

VCCNOR2

XOR2

STEPCNT[15:0]

NTOT[15:0]

SVMAX[15:0]

SU[15:0]

PERF[15:0]

PERF[15:0]

PERF[15:0]

VMIN[15:0]

VMIN[15:0]

VMAX[15:0]

ND2[15:0]

STEPCNT[15:0]

CLR1

LT

CLK2

FIN

FIN

LE

CLR

BGA

CLK1

CE3

CLK2

CLR1

CE3

CE2

SMID

Page 274: Tesis_Gonzalez_Sergio.pdf

Apen

dice

D.

Desarrollos

enFP

GA

2571

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

A A

B B

C C

D D

E E

F F

G G

H H

Xilinx Corporation

2100 Logic Drive

San Jose, CA 95124

Project: PROFILE

Macro: PARAMETER

Date: 6/5/00

Date Last Modified: 6/5/00

BUFE16E

BUFE16E

BUFE16E

GND

VCC

GND,GND,GND,GND,GND,GND,GND,VCC,VCC,VCC,VCC,VCC,GND,VCC,GND,GND

P15,P14,P13,GND,VCC,VCC,VCC,GND,GND,GND,VCC,GND,GND,GND,GND,GND

GND,VEL14,VEL13,VEL12,VEL11,GND,GND,GND,GND,GND,GND,GND,GND,GND,GND,GND

VMIN[15:0]

VMAX[15:0]

NTOT[15:0]

P15

VCC

GNDVEL11

VEL12

VEL13

VEL14

P13

P14

VCC

VCC

VCC

Page 275: Tesis_Gonzalez_Sergio.pdf

Apen

dice

D.

Desarrollos

enFP

GA

2581

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

A A

B B

C C

D D

E E

F F

G G

H H

Xilinx Corporation

2100 Logic Drive

San Jose, CA 95124

Project: PROFILE

Macro: OUTPUTS

Date: 6/5/00

Date Last Modified: 6/5/00

OBUFLOC=P51

OPAD

OBUFLOC=P50

OPAD

OBUFLOC=P49

OPAD

OBUFLOC=P48

OPAD

AOUTA

BOUTB

COUTC

DOUTD

Page 276: Tesis_Gonzalez_Sergio.pdf

Apen

dice

D.

Desarrollos

enFP

GA

2591

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

A A

B B

C C

D D

E E

F F

G G

H H

LOC=P57

IPAD

IBUF

LOC=P28

IPAD

IBUF

LOC=P27

IPAD

IBUF

BUFGP

LOC=P13

IPAD

IBUF

LOC=P20

IPAD

IBUF

LOC=P19

IPAD

LOC=P56

IPAD

INVIBUF

IBUFLOC=P23

IPAD

IBUF

LOC=P24

IPAD

IBUFLOC=P25

IPAD

IBUFLOC=P26

IPAD

P14

PASOS15

ICLK

CLR

CLK

CLRIN

ACEL0

P15

ACEL1

AX0

PASOS13

PASOS14

P13

AX1

VX14VEL14

VX13VEL13

VX12VEL12

VX11VEL11

Page 277: Tesis_Gonzalez_Sergio.pdf

Apen

dice

D.

Desarrollos

enFP

GA

2601

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

A A

B B

C C

D D

E E

F F

G G

H H

Xilinx Corporation

2100 Logic Drive

San Jose, CA 95124

Project: PERFIL2K

Macro: INIT

Date: 6/1/00

Date Last Modified: 6/5/00

INV

CB16CE

C

CE CEO

CLR

Q[15:0]

TC

FJKCE

C

CE

CLR

J

K Q

GND

VCC

CLKDIV[15:0]CE2

CE2

SCE

CLRCLR

CLKDIV13

CLKDIV7

LECLK

Page 278: Tesis_Gonzalez_Sergio.pdf

Apen

dice

D.

Desarrollos

enFP

GA

2611

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

A A

B B

C C

D D

E E

F F

G G

H H

Xilinx Corporation

2100 Logic Drive

San Jose, CA 95124

Project: PROFILE

Macro: INDEXER

Date: 6/5/00

Date Last Modified: 6/5/00

FDCE

D

C

CE

CLR

Q

FJKC

CCLR

J

K Q

VCC

STEPCLK

CLR

CLKDIV3

STCLKCMP

CLK

CLR

NFIN

Page 279: Tesis_Gonzalez_Sergio.pdf

Apen

dice

D.

Desarrollos

enFP

GA

2621

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

A A

B B

C C

D D

E E

F F

G G

H H

Xilinx Corporation

2100 Logic Drive

San Jose, CA 95124

Project: PROFILE

Macro: profile1

Date: 6/5/00

Date Last Modified: 6/5/00

CB2CLED

C

CE CEO

CLR

D0

D1

L

Q0

Q1

TC

UP

AND2

AND2

AND2

AND2

OR2

AND2

AND2B2

INV

XOR2

VCC

GNDGND

STEPCLK

FIN

NFIN

A1

B1

D1

A

B

C

D

C1

NFIN

Page 280: Tesis_Gonzalez_Sergio.pdf

Apen

dice

D.

Desarrollos

enFP

GA

2631

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

A A

B B

C C

D D

E E

F F

G G

H H

Xilinx Corporation

2100 Logic Drive

San Jose, CA 95124

Project: PROFILE

Macro: COMP24

Date: 6/5/00

Date Last Modified: 6/5/00

AND2

COMPM8

A[7:0]

B[7:0]

GT

LT

COMPM16

A[15:0]

B[15:0]

GT

LT

VCC

XNOR2

XNOR2

OR2

OR2

GND

GND,GND,GND,GND,GND,GND,GND,GND,GND,GND,GND,VCC,GND,GND,VCC,VCC

V[31:16]

V[15:8]

GND,GND,GND,VCC,GND,GND,VCC,GND

CMP

VCC

GND

Page 281: Tesis_Gonzalez_Sergio.pdf

Apen

dice

D.

Desarrollos

enFP

GA

2641

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

A A

B B

C C

D D

E E

F F

G G

H H

16AND

Y0

DI[15:0] DO[15:0]

16AND

Y0

DI[15:0] DO[15:0]

M16_1ED0

D1

D10

D11

D12

D13

D14

D15

D2

D3

D4

D5

D6

D7

D8

D9

E

O

S0

S1

S2

S3

ADD16

A[15:0]

B[15:0]

CI

COOFL

S[15:0]

16AND

Y0

DI[15:0] DO[15:0]

INV

GND

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

FDRE

C

CE

D Q

R

CB4RE

C

CE CEO

Q0

Q1

Q2

Q3

R

TC

GNDVCC

FJKRSE

C

CE

J

K Q

R

S

X[15:0]

P[31:16]

AAA[15:0]

P[15:0]

Y[15:0]

P[31:16]I[30:15]

PO[15:0]

PO[31:16]

PO[31:0]

VCC

CE

C3

I31

I15

P4

P15 P14 P13

P9P10P11

P7

P3

P6 P5

P2 P1

P12

P8

P0

CLK CLK CLK

CLKCLKCLK

CLK CLK CLK

CLKCLKCLKCLK

CLK

CLK

CLK

RESET RESET RESET

RESETRESETRESET

RESET RESET RESET

RESETRESETRESETRESET

RESET

RESET

RESET

I16I17I18I19

I20I21I22I23

I24I25I26I27

I28I29I30I31

P16P17P18P19

P20P21P22P23

P24P25P26P27

P28P29P30P31

CLK CLK CLK

CLKCLKCLK

CLK CLK CLK

CLKCLKCLKCLK

CLK

CLK

CLK

RESET RESET RESET

RESETRESETRESET

RESET RESET RESET

RESETRESETRESETRESET

RESET

RESET

RESET

RESET

CLKTC

CLK

Y0

Y1

Y2

Y3

Y4

Y5

Y6

Y7

Y8

Y9

Y10

Y11

Y12

Y13

Y14

Y15

C0

C1

C2

CE CE

CE CE

CE CE

CE CE

CE CE CE

CE CE

CE CE

CE CE CE

CE

CE

CE

CE

CE

CE

CECE

CE

CE

CE

CE

CECE

CE

RESET

VCC

Page 282: Tesis_Gonzalez_Sergio.pdf

Apendice E

Hojas de Datos

A continuacion se presentan las hojas de datos de los diferentes motores y

encoders opticos utilizados en las pruebas del sistema propuesto. Tambien se

encuentran las hojas de datos del driver micropaso utilizado, el MD808, el cual

esta especıficamente disenado para para los motores serie KM09 utilizados. Ası co-

mo tambien el encoder optico adosado a la estructura del motor. Las hojas de

datos de todos esto componentes fueron obtenidas del manual STEP MOTOR

DRIVE PRODUCTS 2003 del fabricante Superior Electric, Charlotte, NC, USA.

http://www.DanaherMotion.com/.

En el caso del encoder optico de precision usado en algunas de la pruebas

iniciales, el E520/521, las hojas de datos fueron obtenidas directamente del fabri-

cante, ELAP S.p.A., Corsico, Italia.

http://www.elap.it/

265

Page 283: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 266

10

ww

w.

Da

na

he

rM

ot

io

n.

co

m

70

4-

58

8-

56

93

STEP MOTORS

KM09High Torque 90mm Frame S ize (NEMA S ize 34)

Performance Envelope(see page 13 for detailed torque-speed curves)

• Up to 200% rated torque reserve capacity

• ± 2% typical step accuracy

• Standard terminal box, encoders, and precision

gearheads available

• Available with four or six leads

• Customized configurations available

MotorFrame

Minimum Holding TorqueRotorInertia

*Weight Maximum Shaft Load MinimumResidualTorque

Unipolar2Ø on

Bipolar2Ø on

Net Ship Overhang Thrust

oz-in(N-cm)

oz-in(N-cm)

oz-in-s2

(kg-cm2)lb

(kg)lb

(kg)lb

(kg)lb

(kg)oz-in

(N-cm)

KMO91305

(215)385

(272).016

(1.13)3.8

(1.73)4.0

(1.81)25

(11)50

(23)10

(7.1)

KMO92610

(431)770

(544).031

(2.19)6.2

(2.82)6.4

(2.90)25

(11)50

(23)15

(11)

KMO93915

(646)1155(816)

.047(3.32)

8.7(3.95)

8.9(4.03)

25(11)

50(23)

23(16)

* Weight for motor with leads.

Page 284: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 267

11

ww

w.

Da

na

he

rM

ot

io

n.

co

m

70

4-

58

8-

56

93

STEP MOTORS

KM09

KM 09

1 single stack2 double stack3 triple stack

L leadsT terminal box

ConnectionsF four leadsS six leads

XX total current E Rear shaft extensionC2 200 line, six output encoderC4 400 line, six output encoderC5 500 line, six output encoderC12 1250 line, six output encoder

See next page for additional KM09 information4-CONNECTION STEP MOTORS

Model Number Winding SpecificationsSee Next page for options Voltage (VDC) Current (amperes) Resistance (ohms) Inductance (mH)

KM 091F05 3.0 2.7 1.1 11KM 091F07 2.5 3.3 0.76 7.5KM 091F13 1.3 6.6 0.19 1.9

KM 092F07 3.5 3.3 1.1 11KM 092F13 1.7 6.5 0.27 2.9

KM 093F07 4.9 3.4 1.4 18KM 093F08 4.0 4.0 0.99 13KM 093F10 3.2 5.1 0.63 8.3KM 093F14 2.5 6.8 0.36 4.5

6-CONNECTION STEP MOTORS

Model NumberWinding Specifications

Unipolar Bipolar Series

See Next page for options

Voltage(VDC)

Current(amperes)

Resistance(ohms)

Inductance(mH)

Voltage(VDC)

Current(amperes)

Resistance(ohms)

Inductance(mH)

KM 091S02 9.3 1.0 9.3 47 13 0.70 19 190

KM 091S06 2.9 3.1 0.94 4.7 4.1 2.2 1.9 19

KM 091S08 2.1 3.8 0.55 2.9 2.9 2.7 1.1 11

KM 091S09 1.8 4.7 0.38 1.9 2.5 3.3 0.76 7.5

KM 092S09 2.5 4.6 0.54 2.8 3.4 3.2 1.1 11

KM 093S07 4.4 3.5 1.3 8.3 6.2 2.5 2.5 3.3

KM 093S10 3.5 4.8 0.72 4.5 4.8 3.4 1.4 18

Page 285: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 268

12

ww

w.

Da

na

he

rM

ot

io

n.

co

m

70

4-

58

8-

56

93

STEP MOTORS

KM09: Motor D imens ions

Add “E” to model number for double ended shaft. Example: KML092F07E

C2, C4, C500 Encoders

Encoder

Terminal Box

C12 Encoder

Add to Model Number:

Change to Model Number:

Example: KMT093S07 (triple stack, terminal box,

six leads, 3.5 amp winding)

Terminal Boxw/Encoder

Change to Model Number:

Example: KMT092F07C12 (double stack, terminal box,

four leads, 3.3 amp winding,

C12 encoder)

C2 200 lines per rev.

C4 400 lines per rev.

C5 500 lines per rev.

C12 1250 lines per rev.

Outputs: A, B, Index,

A, B, Index,

Differential Line Drivers supplied

Example: KML093S07C5 (triple stack,

leaded, six leads, 3.5 amp winding)For encoder specification see page 22-23

Page 286: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 269

13

ww

w.

Da

na

he

rM

ot

io

n.

co

m

70

4-

58

8-

56

93

STEP MOTORS

KM09

0

50

100

200

150

250

300

350

400

0

35

71

141

106

177

212

247

0

50

100

200

150

250

300

350

400

0

35

71

141

106

177

212

247

0

50

100

200

150

250

300

350

400

0

35

71

141

106

177

212

247

0

100

200

400

300

500

600

700

800

0

71

141

282

212

353

424

494

0

100

200

400

300

500

600

700

800

0

71

141

282

212

353

424

494

0

100

200

400

300

500

600

700

800

0

71

141

282

212

353

424

494

KM092

0 0

200 141

400

600

282

1000

565800

424

1200

706

0 0

200 141

400

600

282

1000

565800

424

1200

706

0 0

200 141

400

600

282

1000

565800

424

1200

706

KM093

36 V Bipolar - Full Step36 volt data measured with

the SS2000MD4 Modular

Drive.

72 V Bipolar - Microstep72 volt data measured with

MD808 Modular Drive

170 V Bipolar - Microstep170 volt data measured with

SS2000D3, D3i, D6, or D6i

Packaged Drive

• The curves do not show system resonances which will vary with system mechanical parameters.

• Duty cycle is dependent on torque, speed, drive parameters, and heat sink conditions.

Maximum case temperature is 100°C.

KM 091F05 - 2.5 A peak KM 091F13 - 2.5 A peak

KM 091F13 - 3.5 A peak

KM 091F07 - 4.0 A peak KM 091F13 - 4.0 A peak

KM 091F13 - 8.0 A peak

KM 091F05 - 3.0 A peak KM 091F07 - 3.0 A peak

KM 092F07 - 2.5 A peak KM 092F07 - 3.5 A peak

KM 092F13 - 2.5 A peak KM 092F13 - 3.5 A peak

KM 092F07 - 4.0 A peak KM 092F013 - 4.0 A peak

KM 092F13 - 8.0 A peak

KM 092F07 - 3.0 A peak KM 092F07 - 4.0 A peak

KM 092F13 - 3.0 A peak KM 092F13 - 6.0 A peak

KM 093F07 - 2.5 A peak KM 093F10 - 2.5 A peak

KM 093F14 - 3.5 A peak

KM 093F07 - 4.0 A peak KM 093F10 - 7.0 A peak

KM 093F14 - 8.0 A peak

KM 093F07 - 3.0 A peak KM 093F10 - 6.0 A peak

KM 093F14 - 3.0 A peak KM 093F14 - 6.0 A peak

KM091

Page 287: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 270

14

ww

w.

Da

na

he

rM

ot

io

n.

co

m

70

4-

58

8-

56

93

STEP MOTORS

KM11High Torque 170mm Frame S ize (NEMA S ize 42)

Performance Envelope(see page 17 for detailed torque-speed curves)

3000

2500

2000

1500

1000

500

KM113

KM112

KM111

* Weight for motor with leads.

MotorFrame

Minimum Holding TorqueRotorInertia

*Weight Maximum Shaft Load MinimumResidualTorque

Unipolar2Ø on

Bipolar2Ø on

Net Ship Overhang Thrust

oz-in(N-cm)

oz-in(N-cm)

oz-in-s2

(kg-cm2)lb

(kg)lb

(kg)lb

(kg)lb

(kg)oz-in

(N-cm)

KML1111,030(730)

1,450(1,020)

0.078(5.5)

11.0(5.0)

12.2(5.5)

75(34.0)

130(59.0)

42(30)

KML1121,950

(1,380)2,750

(1,940)0.155(10.9)

18.4(8.3)

19.6(8.9)

75(34.0)

160(72.6)

84(59)

KML1132,650

(1,870)3,750

(2,650)0.229(16.2)

25.7(11.7)

26.9(12.2)

75(34.0)

160(72.6)

106(75)

• Up to 200% rated torque reserve capacity

• ±5% typical step accuracy

• Standard terminal box, encoders, and precision

gearheads available

• Available with four, six, or eight leads

• Customized configurations available

Page 288: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 271

22

ww

w.

Da

na

he

rM

ot

io

n.

co

m

70

4-

58

8-

56

93

STEP MOTORS

Incrementa l Rotary Opt i ca l K i t Encoders

Encoders

EK 25 20021 2

Shaft Size25 = 1/4 Inch Diameter38 = 3/8 Inch Diameter

Number of Outputs2 = Single-Ended (A, B only)3 = A, B, & Index 6 = A, B, & Index

A, B, & Index (With Differential Line Drivers)

Pulses PerRevolution: 200,400, 500, 1250

Encoder BodyDiameter

(2.1 inches)

Encoder Kit

200, 400, 500 lines per revolution

1250 lines per revolution

NOTE: 1250 lines per revolution

- - - -

Page 289: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 272

23

ww

w.

Da

na

he

rM

ot

io

n.

co

m

70

4-

58

8-

56

93

STEP MOTORS

SPECIFICATIONS 200/400/500 LINES PER REV 1250 LINES PER REVWeight 2.1 ounces 6 ounces

Moment of Inertia 2.6 x 10-4 oz-in-sec2 max 5.0 x 10-4 oz-in-sec2

Bearing Life L10 = 2 billion revolutions

Acceleration 100,000 rad/sec2 100,000 rad/sec2

Bore size 0.250 in or 0.375 in 0.250 in or 0.375 in

Slew Speed 15,000 rpm max 7,000 rpm max

Strain Relief Withstands 10 lb pull on cable or wire bundle Withstands 10 lb pull on cable or wire bundle

Mounting Holes 2 x #4-40 at 180 on a 1.812 dia bolt circle 2 x #4-40 at 180 on a 1.812 dia bolt circle

Perpendicularity (Shaft-to-Mount) 0.005 in TIR –

Shaft Endplay ± 0.010 in – 0.060 in

Shaft Diameter

Required

0.2495 / 0.2500 in0.3745 / 0.3750 in

0.2495 / 0.2500 in0.3745 / 0.3750 in

Minimum Usable Shaft Length 0.056 in Minimum Required 0.70 in

Code Incremental Incremental

Cycles Per Revolution 200, 400, 500, as specified 1250

Supply Voltage 5 VDC 5 VDC

Output Format Dual channel quadrature, 45° min. edge separation Dual channel quadrature, 45° min. edge separation

Output Format Options Index and complementary ouputs Index and complementary ouputs

Output Type,

Less Complements

Square wave TTL compatible short-circuitedprotected capable of sinking 10 ma

Square wave TTL compatible short-circuitedprotected capable of sinking 10 ma

Output Type,

With Complements

Differential line drivers (26LS31)capable of sinking 20 ma

Differential line drivers (26LS31)capable of sinking 20 ma

Frequency Response 100 kHz 100 kHz

Frequency Modulation ±0.5% max. @ 50 kHz 1% max.

Frequency Adulation 3.0 arc min. max. (zero runout) 3.0 arc min. max. (zero runout)

Operation Temperature -10° C to +80° C (less complements)-10° C to +100° C (with complements)

0° C to + 85° C

Storage Temperature -20° C to +100° C (less complements)-40° C to +100° C (with complements)

-30° C to +110° C

Enclosure Unsealed housing,(must be protected from harsh environments)

Unsealed housing,(must be protected from harsh environments)

Encoders

MEC

HANI

CAL

MOT

OR I

NTER

FACE

ELEC

TRIC

ALEN

VIRO

NMEN

TAL

Page 290: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 273

BA N-m N-cm kgm* oz-in lb-ft lb-in

N-m ===== 1.00 x 102 1.020 x 10 -1 1.416 x 102 7.376 x 10 -1 8.851

N-cm 1.000 x 10 -2 ===== 1.020 x 10 -3 1.416 7.376 x 10 -3 8.851 x 10 -2

kgm* 9.807 9.807 x 102 ===== 1.389 x 103 7.233 8.680 x 101

oz-in 7.062 x 10-3 7.062 x 10-1 7.201 x 10-4 ===== 5.283 x 10-3 6.250 x 10-2

lb-ft 1.356 1.356 x 102 1.383 x 10-1 1.920 x 102 ===== 1.200 x 101

lb-in 1.130 x 10-1 1.130 x 101 1.152 x 10-2 1.600 x 101 8.330 x 10-2 =====

* Also written as kpm, kpcm, and pcm, respectively, to denote the force equivalent of the kg and g mass.

28

ww

w.

Da

na

he

rM

ot

io

n.

co

m

70

4-

58

8-

56

93

STEP MOTORS

Rotor Inertia

Density of Materials

Type High Median Low

Ball - Nut 95% 90% 85%

Acme with metal nut ** 55% 40% 35%

Acme with plastic nut 85% 65% 50%

** Since metallic nuts usually require a viscous lubricant,

the coefficient of friction is both speed and temperature

dependent.

Application Assistance (Continued)

ModelRotor Inertia

oz-in-s2 lb-cm2 lb-in2

KM060 0.0015 0.109 0.037

KM061 0.0034 0.240 0.082

KM062 0.0056 0.395 0.135

KM063 0.0084 0.593 0.203

KM091 0.016 1.13 0.386

KM092 0.031 2.19 0.748

KM093 0.047 3.32 1.134

KM111 0.078 5.5 1.882

KM112 0.155 10.9 3.740

KM113 0.229 16.2 5.526

KM172 0.87 61.4 20.993

MaterialDensity

lb/in3 g/cc

Acryl .0433 1.199

Aluminum .0975 2.700

Bakelite .0469 1.299

Brass .3069 8.498

Bronze .3213 8.897

Copper .3213 8.897

Glass .0939 2.600

Iron .2852 7.897

Iron (cast) .2635 7.296

Magnesium .0614 1.700

Nickel .3177 8.797

Nylon .0412 1.141

Rubber .0433 1.199

Steel .2816 7.798

Teflon .0794 2.199

Dry Contact Unless Noted

Steel on Steel 0.58

Steel on Steel (lubricated) 0.15

Aluminum on Steel 0.45

Copper on Steel 0.22

Brass on Steel 0.19

Teflon on Steel 0.04

Coefficients of Static Friction

Leadscrew Efficiencies

BA mm cm m inch feet

mm ===== 0.1 0.001 0.03937 0.003281

cm 10 ===== 0.01 0.3937 0.03281

m 1000 100 ===== 39.37 3.281

inch 25.4 2.54 0.0254 ===== 0.08333

feet 304.8 30.48 0.3048 12 =====

Length Conversion Factors §

BA rpm rps Rad / sec * step / sec

rpm ===== 0.01667 0.1047 3.333

rps 60 ===== 6.283 200

Rad /sec 9.552 0.1592 ===== 31.83

* step / sec 0.3 0.005 0.03142 =====

* Step rates are for 1.8° step motors (200 steps / Rev)

§ Multiply units of "A" by indicated factor to obtain units of "B".

Force Conversion Factors §B

A g kg oz lb Newton

g ===== 0.001 0.03527 0.002205 0.0098

kg 1000 ===== 35.27 2.205 9.807

oz 28.35 0.02835 ===== 0.0625 0.278

lb 453.6 0.4536 16 ===== 4.448

Newton 102 0.102 3.597 0.2248 =====

BA kgm2 kgcm2 oz-in-sec2 lb-in2 lb-in-sec2 lb-ft-sec2

(slug ft2)

kgm2 ===== 1.00 x 104 1.416 x 102 3.418 x 103 8.851 7.376 x 101

kgcm2 1.00 x 10 -4 ===== 1.416 x 10 -2 3.418 x 10 -1 8.851 x 10 -4 7.376 x 10 -5

oz-in-sec2 7.062 x 10 -3 7.061 x 10 ===== 2.413 x 10 6.250 x 10 -2 5.208 x 10 -3

lb-in2 2.926 x 10 -4 2.926 4.144 x 10 -2 ===== 2.590 x 10 -3 2.158 x 10 -4

lb-in-sec2 1.130 x 10 -1 1.130 x 103 1.600 x 10 3.861 x 102 ===== 8.333 x 10 -2

lb-ft-sec2

(slug ft2) 1.356 1.356 x 104 1.920 x 102 4.633 x 105 1.200 x 101 =====

Inertia Conversion Factors §

Torque Conversion Factors §

Speed Conversion Factors §

Page 291: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 274

29

ww

w.

Da

na

he

rM

ot

io

n

70

4-

58

8-

56

93

STEP MOTORS

Technical Notes

Characteristics of Superior ElectricStep Motors• Brushless, permanent magnet motors

• Operate in full-step (1.8°) or half-step (0.9°) increments

• Microstepping provides increments as small as 0.0072°

• Accuracies of ±2% (0.036°) for size 23 and 34 motors,

and ±5% (0.09°) for size 42 and 66 motors

• Speeds up to 20,000 steps per second (6,000 rpm)

• Holding torque ratings from 54 to 5,330 oz-in (38 to

3,764 N-cm)

• Wide range of configurations and frame sizes

• Easily adapted to different control types, including

microprocessor based systems

• Class B insulation, operate at ambient temperatures from

-40°C to +65°C (-40°F to +149°F)

• No brushes, ratchets or detents to wear out

• Lubricated-for-life ball bearings

Comparison of Servomotors versus

Step MotorsOften, when a motion control system is being specified, the

designer must choose between a step motor system and a

servomotor system. In most cases, a well designed step motor

system will perform as well or better than a servomotor, and at

lower cost. The following comparison of the characteristics of

the two types of motors outlines some of the advantages of step

motors for motion control.

Servomotor Characteristics

• Require complex, expensive control systems

• Position sensing devices needed for feedback to control

• Relatively low torque for size

• Thermally inefficient

• Control system must be “tuned” to load; must be “retuned”

if load is changed

• Brushes on DC servomotors subject to wear

Superior Electric Step Motor Characteristics

• Relatively inexpensive

• Can be operated “open-loop” (no position feedback required)

• Noncumulative step error

• Simple control electronics can be used

• Brushless construction aids reliability

• Maintenance free

• Will not be damaged if stalled

• High torque for size

• Maintain position when at rest

Construction of Step MotorsA Superior Electric step motor is a brushless motor consisting of

a rotor and a stator assembly. The illustration shows the

internal construction and tooth alignment of the motor. The

fine teeth, evenly spaced around the entire diameter, provide the

incremental angular rotation that results in mechanical motion.

Superior Electric step motors are constructed with a 48-50 or a

52-50 tooth pitch configuration. The second number, 50, refers

to the number of teeth on the rotor. The 50 teeth, combined

with the two phase winding configuration and permanent

magnet construction, deliver a 1.8° step angle. Both

configurations have a slightly different tooth pitch

on the stator (48 or 52) to provide smoother

operation and softer step-to-step motion with

less resonance or mechanical instability at

low speed. The 52 tooth stator design is

used in the new KM motors to provide

extra torque. Superior Electric holds the

original patent on the 48-50 design.

Page 292: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 275

30

ww

w.

Da

na

he

rM

ot

io

n.

co

m

70

4-

58

8-

56

93

STEP MOTORS

Stepping TechniquesThe terms full-step, half-step and microstep are commonly used in

the discussion of step motors.

A standard 1.8° step motor has 200 discrete positions in a full 360°

revolution. Since 360° divided by 200 equals 1.8°, the motor shaft

will advance 1.8° each time the motor is given a digital command to

take one step. This is known as a full-step.

The term “half-step” indicates a 0.9° step angle (half of a full 1.8°

step). This is achieved with a switching technique that alternately

applies positive current, no current, and negative current to each

winding in succession.

The term “microstep” refers to a more sophisticated form of control

which goes beyond the simple switching of power between phase A

and phase B of the motor windings, and takes control of the

amount of current being sent to the individual windings.

Microstepping permits the shaft to be positioned at places other

than the 1.8° or 0.9° locations provided by the full-step and half-

step methods. Microstepping positions occur between these two

angular points in the rotation of the rotor.

The most commonly used microstep increments are 1/5,

1/10,1/16,1/32, 1/125 and 1/250 of a full step. Microstep increments

chosen by Superior Electric simplify control of both US and metric

units of measurement, and also allow finer positioning resolution.

While a full step of 1.8° will give a 0.001 inch resolution when the

motor is driving through a lead screw which has a 0.2000 inch lead,

resolutions of 0.000008 inch or less are possible using

microstepping.

A major benefit of microstepping is that it reduces the amplitude of

the resonance that occurs when the motor is operated at its natural

frequency or at sub-harmonics of that frequency. The improved

step response and reduced amplitude of the natural resonances

result from the finer step angle.

Switching Sequence For Operation FromBipolar DrivesFull-Step (Two-Phase On) Full-Step (One-Phase On)

Energizing Sequence* Energizing Sequence*

Half-Step Phase Energizing Sequence*

* Rotation is clockwise as viewed from label end of motor.

For counterclockwise rotation, sequence should go from bottom to top of chart.

Switching Sequence For Operation FromUnipolar DrivesFour Step Input Sequence (Full-Step Mode)*

Eight Step Input Sequence (Half-Step Mode)*

* Rotation is clockwise as viewed from label end of motor. For counterclockwise

rotation, sequence should go from bottom to top of chart.

StepPhase

A B

1 +1 +1

2 +1 -1

3 -1 -1

4 -1 +1

1 +1 +1

StepPhase

A B

1 +1 +1

2 +1 –

3 +1 -1

4 – -1

5 -1 -1

6 -1 –

7 -1 +1

8 – +1

1 +1 +1

StepPhase

A B

1 +1 –

2 – -1

3 -1 –

4 – +1

1 +1 –

Technical Notes (Continued)

Step SW1 SW2 SW3 SW4

1 ON OFF ON OFF

2 ON OFF OFF ON

3 OFF ON OFF ON

4 OFF ON ON OFF

1 ON OFF ON OFF

Step SW1 SW2 SW3 SW4

1 ON OFF ON OFF

2 ON OFF OFF OFF

3 ON OFF OFF ON

4 OFF OFF OFF ON

5 OFF ON OFF ON

6 OFF ON OFF OFF

7 OFF ON ON OFF

8 OFF OFF ON OFF

1 ON OFF ON OFF

Page 293: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 276

31

ww

w.

Da

na

he

rM

ot

io

n

70

4-

58

8-

56

93

STEP MOTORS

Effects of Drive Design

Drive design is an important factor in determining the overall

performance which will be obtained. The types of drives, and their

effects on motor performance, are as follows:

L/R Drives – This design was the basis for most older drives and is

still used on some existing drives. It allows half-or full-step motor

operation, but does not permit variable control of current level.

L/R drives also require dropping resistors, which reduce motor

efficiency. L/R drives provide satisfactory performance at lower

stepping rates, but do not have good high speed capabilities. This

is the most basic drive design.

Constant Current Chopper Drives – These drives maintain

relatively constant current to the motor at all speeds, and therefore

offer good stepping performance at rates up to approximately

10,000 steps per second. Although more costly and complex than

L/R drives, they allow use of features such as closed-loop control,

microstepping, current boost, and stabilization that improve motor

performance.

Line Operated, High Voltage Chopper Drives – These drives deliver

higher voltage to the motor for optimum high speed performance.

They are also able to operate larger motors to provide high

performance and excellent efficiency. Since they do not need bulky

stepdown transformers, line operated drives are more compact

than other chopper drives.

Effects of Motor Voltage

Motor performance at mid-range and high-range speeds can be

improved by increasing the voltage to the motor. However, the

motor will operate at a high temperature when the voltage is

increased, so some means of cooling may be necessary. In general,

motor supply voltage does not affect operation at lower speeds.

Motor Inductance Effects

For a given supply voltage, a low inductance motor will give better

performance at high speeds than a high inductance motor, but will

operate at a higher temperature. This is true because current will

increase faster in a low inductance winding, each time the winding

power is switched. High inductance motors yield higher

maximum torque and operate cooler, but their top speed is limited

and torque falls off more rapidly as speed rises, versus a lower

inductance motor.

Angular Position DeviationWhen a load is applied to a

step motor shaft, the shaft

will rotate slightly from the

no load position. The

Angular Position Deviation

curve shows shaft deviation

from the no load position

vs. percent of rated holding

torque. This curve is valid

for all Superior Electric

1.8° step motors.

NOTE: Proper constructionof the mechanism of thedriven load is essential in order to accurately achieve a trueversus theoretical position.

Connection Diagrams

Technical Notes (Continued)

Torque vs. Speed CharacteristicsMany factors determine the torque vs. speed characteristics of a

Step Motor. These include the design of the drive system and the

voltage supplied to the motor, as well as the inductance rating of

the motor used.

NOTE: Numbers identify terminal board connections.

Page 294: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 277

Modifications

32

ww

w.

Da

na

he

rM

ot

io

n.

co

m

70

4-

58

8-

56

93

STEP MOTORS

Standard OptionsDouble End Shafts

These motors have an output shaft at both ends. Motors with

double end shafts are used with an encoder, to mount a knob

for turning the motor shaft manually, etc. NEMA size 23 and

34 motors with double end shafts have two tapped holes in

the rear end bell for mounting encoders. Motors with shafts

at both ends are identified with a letter E suffix added to the

type number. See individual sections for detailed ordering

information.

Encoders

Superior Electric offers encoders which can be supplied as

kits for mounting to existing NEMA 23 or 34 motors with

double end shafts, or which can be supplied as an integral

part of all size motors. The encoders are available with

outputs of 200, 400, 500 or 1250 pulses-per-revolution.

See individual motor sections for information on ordering a

motor with an integral encoder. For kit type numbers and

encoder specifications, see pages 22-23.

Gearheads

Motors are available with precision gearheads.

Contact factory for details.

• NEMA Size 23, 34, 42

• Ratio from 3:1 to 100:1

• Continuous output torque up to 25,600 oz-in

(18,000 N-cm)

• Peak output torque up to 42,500 oz-in (30,000 N-cm)

• Backlash less than 30 arc-minutes

• Minimum efficiency 85%

Many types of modifications are available.

Please contact us with your specific requirements.

Shaft Modifications

A variety of motor output shaft modifications can be supplied.

These include special flats and keyways, lengths, diameters,

through holes and similar changes which may be needed to

allow mounting of timing belts, pulleys or gears or to

facilitate mounting the motor to the equipment being driven.

Electrical Modifications

Motors can be supplied with a number of electrical

modifications, including nonstandard lead lengths, electrical

connectors and special windings.

Page 295: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 278

33

Definitions

ww

w.

Da

na

he

rM

ot

io

n

70

4-

58

8-

56

93

STEP MOTORS

1.1 COMMAND PULSE RATE: Command pulse rate is the rate at which

successive command pulses are applied to the motor by the drive circuit.

1.2 DETENT TORQUE: Detent torque is the lowest value of torque (for a

complete revolution) which can be applied to the motor’s shaft which

causes the rotor to advance to the next detent position with the stator

winding de-energized and not connected to one another in any way

electrically.

1.3 DIELECTRIC WITHSTAND VOLTAGE: Dielectric withstand voltage is

the maximum RMS value of a 50 to 60 Hz voltage which may be applied to

the motor (winding to winding, or winding to frame, as specified) without

avalanche breakdown of the insulation occurring within 60 seconds from

the time of the application of the test voltage. Reactive components of

current are to be disregarded. Avalanche breakdown is defined as a sudden

discontinuity in the rate of change of current with change in voltage

(di/dv).

1.4 DIRECTION OF ROTATION: The direction of rotation of the shaft is

determined by viewing the stepping motor facing the shaft extension

associated with the mounting surface. The standard (positive) direction of

shaft rotation is CW.

1.6 GENERATED EMF: Generated EMF is the counter-electromotive force

(CWMF), also called “back EMF” (EMF), generated by the rotation of the

rotor of a hybrid or Permanent Magnet motor when the phase windings

are not energized and are open circuited. It is measured as the peak-to-

peak value of the generated voltage of one winding when the rotor is

driven at a constant angular velocity or 1000 rpm. It is reported as peak

volts (half of the peak-to-peak value measured) per 1000 rpm.

Note: This does not apply to V.R. motors as they have no rotor magnets.

1.7 HOLDING TORQUE: Holding torque is the peak resistance (at a

specified current) to rotation of a gradually rotated shaft of an energized

stepping motor. There are two ‘n’ such torque peaks (half positive, half

negative) in a motor rated at n steps/revolution. The mode and applied

current shall be specified. The torque shall be considered ‘positive’ when

the rotor resists rotation of the shaft by an externally applied torque, and

‘negative’ when it requires the external torque to retard the shaft.

1.8 LOAD: Any external static or dynamic resistance to motion that is

applied to the motor. The character of the load must be defined (e.g.

Coulomb Friction, Viscous Friction, etc.).

1.9 LOAD ANGLE

1.9.1 STATIC LOAD ANGLE: Static Load Angle is the angle through

which the rotor is displaced from its energized no load position by a

given applied torque at a Command Pulse Rate of zero, at a specified

current.

1.9.2 DYNAMIC LOAD ANGLE: The Dynamic Load Angle is the angle

between the loaded and unloaded position of the rotor (at a given

instant) under otherwise identical conditions at a specified command

Pulse Rate & Phase Current.

1.10 MAXIMUM REVERSING COMMAND PULSE RATE: The maximum

reversing pulse rate is the maximum pulse rate at which the unloaded step

motor is able to reverse and remain in synchronism under the specified

drive conditions.

1.11 MAXIMUM SLEW PULSE RATE: The maximum slew pulse rate is the

maximum pulse rate at which the unloaded step motor can remain in

synchronism under the specified drive conditions.

1.12 MECHANICAL HYSTERESIS: The angle (mechanical) between the

unloaded quiescent point when moving CW and the unloaded quiescent

point (of the same step position) when moving in the CCW direction.

1.13 MOUNTING SURFACE PERPENDICULARITY:

Mounting surface perpendicularity is the difference between the maximum

reading and the minimum reading of the dial indicator probing the surface

of a flat ground parallel surface metal plate (a minimum of 6 mm thick)

mounted to the mounting surface of the motor. The motor shaft is held

stationary and the motor with its test plate rotated about the shaft. The

test plate shall have a surface finish of 1 micrometer (32 microinch) or

better, and shall be parallel within 0.0025 mm (0.0001 inch) TIR over the

surface. The indicator probe shall be applied at a diameter equal to the

body diameter of the motor.

1.14 OVERSHOOT (TRANSIENT): The overshoot (transient) is the

amount the shaft of the step motor rotates beyond the final position.

1.15 (MOTOR) PHASE: A motor phase is a set of electrically excited stator

poles, consisting of one or more pairs of oppositely polarized poles. The

magnetic polarity of these poles is sequentially reversed when the number

of phases are even integers, in which case the electrical angle between

phases is 180°/number of phases. When the number of phases are odd

integers, the polarity of the poles does not reverse and the electrical angle

between phases is 360°/number of phases.

NOTE: A bifilar wound set of poles constitutes one motor phase, not two,

since the flux reverses in the pole albeit the pole has two windings and the

current in each is unidirectional. The number of phases is not dependent

on the number of windings, but rather on the electrical angle between

poles.

1.16 POSITIONAL ERROR: Positional error (sometimes designated

‘Absolute Accuracy’) is the deviation from the theoretically correct angular

position of any step position in a complete revolution. The zero position

used in determining the theoretically correct angular position shall be the

midpoint between the two extremes of position error. It is expressed as a

% of the angle of the rated incremental angular motion per step, measured

at no load, with rated current applied to the winding(s), the step sequence

specified, and measured at 25° Celsius. In the 2-on step sequence the

phase currents shall be balanced to within 1% of each other.

1.17 PULL-IN STEP RATE: The pull-in step rate is the maximum

command pulse rate (constant) at which the energized step motor can

accelerate an applied load from standstill to command pulse step rate,

synchronously without missing steps.

Page 296: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 279

34

ww

w.

Da

na

he

rM

ot

io

n.

co

m

70

4-

58

8-

56

93

STEP MOTORS

1.18 PULL-IN TORQUE: The pull-in torque is the maximum positive

coulomb friction torque at which an energized step motor will accelerate

to command pulse step rate, and run in synchronism with the command

pulse rate without losing steps, on application of a fixed specified inertial

load and drive circuit conditions.

1.19 PULL-OUT STEP RATE: The pull-out step rate is the maximum

command pulse rate (constant) at which the energized step motor can run

in synchronism with the command pulse rate at a specified position

coulomb friction load. Conditions of measurement shall exclude viscous

friction and any other form of speed dependent torque.

1.20 PULL-OUT TORQUE: Pull-out torque is the maximum positive

coulomb friction torque which can be applied to the rotating shaft of a step

motor (already running in synchronism with the command pulse rate) at a

given command pulse rate and conditions of drive circuit, without missing a

step. Conditions of measurement shall exclude viscous friction and any

other form of speed dependent torque.

1.21 RESOLUTION: The resolution is the reciprocal of the number of (full)

steps per revolution of the motor shaft.

1.22 RESONANT STEP RATES: Resonant step rates are those step rates at

which there are definitive peaks on the curve of velocity modulation

amplitude vs step rate. The severity of a given resonant range is dependent

on: (a) the velocity modulation amplitude and (b) the bandwidth of the

step-rates in the range.

1.23 RESPONSE RANGE: Response range is the command pulse range

over which the unloaded motor can accelerate to command pulse rate

from standstill, decelerate from command pulse rate to standstill, or

reverse direction (on command) without missing steps.

1.25 SETTLING TIME: Settling time is the total time from the application of

the command signal until the amplitude of the oscillatory motion of the rotor

has diminished to 10% of the amplitude of the greatest oscillatory excursion

in a given step.

1.26 SHAFT RUN-OUT: Shaft run-out is the difference between the

maximum reading and the minimum reading of a dial indicator when

located on the shaft surface. When the distance from the mounting

surface is not specified, the extremity of the shaft shall be used by default.

The motor frame is stationary during such measurement.

1.27 SLEW RANGE: Slew range is the range of command pulse rates over

which the motor can remain unidirectionally in synchronism with the

command pulse rate but cannot start, or reverse at a fixed command pulse

rate without missing steps. The drive circuit conditions shall be specified.

1.28 STEP: A (full) “step” is the increment in angular position of the rotor

between any two adjacent quiescent states when the phases are energized

singly and in sequence. A step is always associated with two phases

energized at all times or with one phase energized at all times. Alternate

1-on, 2-on energization is termed half-stepping.

1.29 STEP ANGLE (BASIC): Is the rated angular increment of rotor

position, at no load between any two adjacent quiescent states when the

phases are energized singly in sequence.

1.30 STEP ANGLE ERROR: (Sometimes designated “Incremental Step

Accuracy”.) This is the maximum + or - deviation from the rated

incremental angular motion per step, for any adjacent steps in a complete

revolution without reversing direction. It is expressed as a % of the angle

of the rated incremental angular motion per step, measured at no load,

with rated current applied to the winding(s), the step sequence specified,

and measured at 25° Celsius. In the 2-on step sequence the phase currents

shall be balanced to within 1% of each other. (Also see positional error.)

1.31 STEP POSITION: A step position is the static angular position which

the shaft of an unloaded step motor assumes when it is energized without

causing continuous rotation. The step sequence shall be specified.

1.32 STEP SEQUENCE: The sequence of excitation defined by the drive

circuit, which when applied to the motor provides a repeatable cyclic

pattern by which the windings are energized.

1.33 STEPPING MOTOR: A step motor is a polyphase synchronous

inductor motor, the rotor of which rotates in discrete angular increments

when the stator windings thereof are energized in a programmed manner

either by appropriately timed DC pulses or by a polyphase alternating

current. Rotation occurs because of the magnetic interaction between the

rotor poles and the poles of the sequentially energized stator phases. The

rotor has no electrical winding but rather salient or magnetized poles.

1.33.1 PERMANENT MAGNET (PM): A permanent magnet step

motor utilizes a rotor which has permanently magnetized poles.

1.33.2 VARIABLE RELUCTANCE (VR) STEP MOTORS: A variable

reluctance step motor utilizes a rotor which has pole salients (soft

iron) without magnetic bias in the de-energized state.

1.33.3 HYBRID (HY): A hybrid step motor utilizes a permanent

magnet to polarize soft iron pole pieces.

1.34 STEPPING RATE: The stepping rate is the number of step angles

through which the step motor shaft rotates in a specified time.

1.37 THERMAL RESISTANCE: Thermal resistance is the opposition to the

flow of heat in the materials of which the motor is constructed. It is

expressed as degrees Celsius per watt. All measurements are taken after

steady state conditions have been achieved.

1.37.1 THERMAL RESISTANCE (WINDING TO FRAME): This is the

measured difference in temperature between the winding and the

surface of the motor O.D. (midpoint) divided by the total electrical

power (watts) input to the motor at the time and two temperature

readings are taken.

Definitions (Continued)

Page 297: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 280

35

ww

w.

Da

na

he

rM

ot

io

n

70

4-

58

8-

56

93

STEP MOTORS

Definitions (Continued)

1.37.2 THERMAL RESISTANCE (FRAME TO AIR): This is the same

as 1.37.1 except that the temperature difference is between the

winding and the surface of the motion O.D. midpoint and the air

surrounding the motor. The air shall be still, the motor suspended

in the air to prevent heat sink effect of bench surfaces, etc.

1.37.3 THERMAL RESISTANCE (FRAME TO HEAT SINK): This is

the same as 1.37.1 except that the temperature differential is that

which exists between motor frame and a heat sink. The heat sink

shall be sufficiently large and sufficiently thick to be (effectively) an

“infinite heat sink” to the motor in question.

1.38 THERMAL TIME CONSTANT: This is the time required for the

winding temperature of a motor to reach 63% of its steady state

temperature RISE with constant POWER applied to the motor. It is

measured by allowing the motor to reach steady state temperature, and

then disconnecting the electrical power input. The winding temperature is

recorded as a function of time, zero time being the time at which the

power source was disconnected. The time required to drop to 37% of the

steady state temperature rise is the thermal time constant. It is usually

expressed in seconds, but any unit of time may be used.

1.39 TORQUE GRADIENT: Torque gradient (sometimes called “stiffness

torque”) is the slope of the torque displacement curve at the no-load

quiescent point.

1.40 TRANSLATOR LOGIC: Translator logic translates the input pulse

train into the selected mode pattern to be applied to a step motor.

1.41 WINDING: A winding is an aggregate of magnet wire turns all on the

poles of a given phase. Where there are two windings per phase, they may

be connected in series or parallel. In the case of the series connection, the

connection between the two windings of a phase (5-lead or 6-lead motors),

the motor is referred to as a bifilar wound motor, but a “winding” consists

of the magnet wire turns from the center tap to either end and not end to

end.

1.42 WINDING INDUCTANCE: The winding inductance of a step motor

winding varies both with rotor position and with excitation current.

Measurements can also be affected by the rate of change of current; thus

when a figure for inductance is given, the conditions under which the

measurements were taken must be quoted. The following three types of

inductance measurements each have their advantage and disadvantage.

That of 1.42.1 is the simplest and fastest measurement to make, and

requires the least equipment, but is least representative of actual operation

conditions. The method of 1.42.3 on the other hand is the most

representative of actual operating conditions, but is the most difficult and

time-consuming of the methods and requires the most specialized

equipment. The method of 1.42.2 is a compromise, perhaps leaning

towards 1.42.3 as being representative of actual operating conditions.

1.42.1 INCREMENTAL UNENERGIZED WINDING INDUCTANCE:

An inductance bridge having a test frequency of 1 kHz is used for

this test. The bridge voltage should be 1 v RMS applied to the motor.

The inductance measurement should be made with the rotor

locked in the “aligned” or “unaligned” position, with no DC current

applied to any of the windings. The figure reported should state

whether the “aligned” or “unaligned” position is used.

1.42.2 INCREMENTAL ENERGIZED WINDING INDUCTANCE: This

is the same as 1.42.1 except that the inductance measurement is

made at some value of winding excitation. Unless otherwise stated,

the winding excitation shall be that of rated current.

1.42.3 INCREMENTAL ENERGIZED WINDING INDUCTANCE BY

CURRENT RISE TIME METHOD: This measurement provides

information from which incremental inductance can be calculated at

any level of excitation up to the level of steady state energization. It

is similar in nature to the inductance obtainable by paragraph 1.42.2

except that it does not suffer from the effects of the 1 kHz test

frequency. Measurements are made with the rotor locked in the

“aligned” and/or the “unaligned” position. As in 1.42.2 a constant DC

voltage is applied to a phase winding. The voltage shall be of such

magnitude that the steady state current is 10% higher than the

highest value of current at which inductance information is desired.

The rise of current with time is recorded (storage oscilloscope,

digitized data on floppy disk, oscilloscope photograph, etc.) The

derivative of the current vs. time curve (di/dt) is that used to

compute the inductance at the value of excitation of interest from

L = V-I*R

di/dt

Where:

V = Applied voltage

I = Current in amperes at which di/dt is

measured

R = Total circuit resistance (including current

monitoring shunt if used) in ohms

di/dt = Rate of change of current with voltage in

amps/sec

L = Inductance in henries

1.43 WINDING RESISTANCE: Winding resistance is the lead-to-lead

(terminal-to-terminal) ohmic resistance measured with the windings at

25° Celsius. A winding is defined in paragraph 1.41. The method used for

measurement of resistance shall be accurate to four significant figures, and

the value reported to three significant figures, the minimum value

rounded down, and the maximum value rounded up.

Page 298: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 281

6

ww

w.

Da

na

he

rM

ot

io

n.

co

m

70

4-

58

8-

56

93

STEP MOTOR DRIVE PRODUCTS

MD808 and MD808-128

Features:- 8 Amp 80 VDC modular drive

- Bi-polar PWM two phase step motor

drive with active mid-range stabilization

- Micro-stepping to 20,000 steps per revolution

(MD808) or 25,600 steps per revolution (MD808-128)

- Compact size

- Full short circuit protection

(phase-to-phase and phase-to-ground)

- Under voltage and transient overvoltage protection

- Thermal protection

- Single input voltage (20 to 80 VDC)

- Patented sturdy all-aluminum case and

efficient thermal design minimize heat

sink requirements

- Optically isolated inputs

- Switch selectable current levels from 3 thru 8 amperes;

no external resistors or jumpers required

- Switch selectable step resolution

- Reduce Current and Windings Off inputs

- Switch Selectable Auto Current Reduction

- Optimal motor performance

- LED fault and power indicators

- Removable Screw Clamp Connectors

- Optional heat sink available

- Bookcase or Flat Mount

• Switch selectable Micro Steps

MD808 — Full, 1/2, 1/5, 1/10, 1/20, 1/25, 1/50, 1/100

MD808-128 — Full, 1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128

• Motor current from 3.0 through 8 amperes, switch

selectable with auto-reduce at standstill

• Operates KML060 thru KML113

• Active stabilization for improved motor performance

• 24 to 80 VDC bus Voltage

• UL Recognized, CE Compliant

Superior MD808 and MD808-128 Microstep

Drive Modules are dependable and affordable

options for a wide variety of OEM, single-axis,

and multi-axis applications.

Both models in this series, feature a bi-polar

PWM drive for maximum torque over a wide

range of speed. Designed for DC input,

MD808 and MD808-128 drives operate from a

single 20 to 80 VDC power supply to help you

conserve on space and cost.

The MD808 provides up to 20,000 micro-steps

per revolution for smooth, low speed

operation. For even greater resolution and flexibility, choose model

MD808-128, featuring up to 25,600 micro-steps per revolution.

If precise operation, customized micro-stepping ranges, rugged

dependability, and solid cost-efficiency are high on your list of

priorities, once again, we have the answer.

Additional specifications available at www.DanaherMotion.com

AffordableVersatility,

withMicro-Stepping,Higher Current,Higher Voltage,

ActiveStabilization

Modular Drives (Continued)

Page 299: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 282

7

STEP MOTOR DRIVE PRODUCTS

ww

w.

Da

na

he

rM

ot

io

n.

co

m

70

4-

58

8-

56

93

Modular Drives (Continued)

OPTO Input Optional Wiring

Ordering InformationTo order MD808, MD808-128 and 221576-001 (heat sink for use

with both MD808 models - recommended for use at 4 amps and

above), call 704-588-5693.

Power Input

MD808/MD808-128Mounting Diagram

Systems DataMOTORS FOR USE WITH THE MD808 AND MD808-128

MotorResistance

(ohms)Inductance

(mH)Current Setting

(amperes)

Power Supply Current

Standstill(amps DC)

Maximum(amps DC)

KML060F05 0.64 2.5 3.0 1.0 2.0

KML061F05 0.85 4.6 3.0 1.0 2.0

KML062F07 0.75 3.4 4.0 1.0 3.5

KML062F13 0.21 0.9 8.0 1.5 4.5

KML063F07 1.00 6.2 4.0 1.0 2.0

KML063F13 0.28 1.5 8.0 2.0 4.5

KML091F07 0.77 7.5 4.0 1.5 4.0

KML091F13 0.19 1.9 8.0 1.5 4.0

KML092F13 0.27 2.9 8.0 2.0 4.5

KML093F10 0.63 8.3 7.0 2.0 4.5

KML093F14 0.36 4.5 8.0 2.0 4.5

KML111F09 0.93 15.8 6.0 1.5 3.0

KML111F11 0.58 10.1 7.0 1.8 3.5

KML112F10 1.00 22.0 7.0 1.8 3.5

KML112F16 0.60 12.8 8.0 2.0 4.5

KML113F10 1.30 31.0 8.0 2.0 4.5

KML113F16 0.50 11.00 8.0 2.0 4.5

For motor dimensions and torque speed curves,

see pages 12 - 15.

Page 300: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 283

S.p.A. I -20094 CORSICO (M I) ITALIA - VIA VITTORIO VENETO 4 - TEL. (++39) 02 4519561 R.A.FA X ( + + 3 9 ) 0 2 4 5 1 0 3 4 0 6 - E - M A I L : e l a p s p a @ t i n . i t - U R L w w w . e l a p . i t

02/1

0

ELAPENCODER ROTATIVI

SERIE E520/ 521

ROTARY ENCODERS

SERIES E520/ 521Encoder rotat ivi , con o senza im pulso di zero, predispost i per m ontaggio di t ipo servo, com pat ibi l i con la ser ie

n o r m al i zzat a i n t er n azi o n al e SI ZE2 3 ; d i sp o n i b i l i an ch e co n f l an g i a s t an d ar d t i p o RE0 4 4 4 ( t i p o RE5 3 0 ) .

La circuiter ia elet t ronica estrem am ente com patta si com bina al m egl io con la m eccanica testata ed af f idabi le,

garantendo eccel lent i r isultat i in term ini di precisione e durata Conformi a norme

I ncr em ental r o tar y encoder s w i th o r w i thout zer o pu lse, f i t t o ser vo- coup l ing , and com pat ib le to the in ter na-

t i onal s t andar d i zed ser i es SI ZE23 ; a f l ange t ype RE0444 i s al so avai l ab le ( ser i es RE530 ) . The com pac t

elect r on ic c i rcu i t r y jo ins per fect ly w i th the r el iab le and thor ough ly tested m echan ical const r uct ion , al low ing

to keep a favour ab le p r ice/per fo r m ance r elat ion . Complying wi th standards

Codice impulsi / Pulse code Incrementale / Incremental

Numero impulsi-giro / Pulses-revolution 2 ÷ 25000

Impulso di zero / Zero reference pulse Un impulso al giro / 1 pulse each revolution

Segnali di uscita Due onde quadre sfasate di 90° ± 15°. Impulso di zero larghezza 90° ± 15°

Output Signals Two square waves 90°±15° out of phase. Zero pulse 90°±15° wide

Elettronica di uscita Push-pull, line-driver, open collector NPN o PNP, pull-up resistor NPN o PNP. Segnali protetti al corto circuito

Electronic output Push-pull, line-driver, open collector NPN or PNP, pull-up resistor NPN or PNP. Protection against short circuits

Alimentazione / Supply 10÷24 Vdc o 5 Vdc±5%. Protezione alle inversioni di polarità / 10÷24 Vdc or 5 Vdc±5%. Protection against polarity reversal

Assorbimento / Current consumption 30÷80 mA

Frequenza max / Max frequency 100 KHz

Tipi di connessione Connettore assiale o radiale tipo MS 7p (10p per uscita line driver) / Cavo assiale o radiale lunghezza 3 m (1 m per uscita line driver)

Connection outlets Axial or radial connector type MS 7p (10p for line driver output) / Axial or radial cable 3 m long (1 m for line driver output)

CARATTERISTICHE ELETTRICHE E FUNZIONALI

ELECTRICAL AND OPERATING SPECIFICATIONS

Dimensioni / Dimensions Vedi disegno / See the drawing

Peso / Weight E520 280 g - RE520 320 g - RE530 600 g

Materiali:Custodia E520 ABS autoestinguente / RE520/RE530 alluminioAlbero Acciaio inox AISI 303

Materials:Case E520 ABS self-extinguishing / RE520/RE530 aluminiumShaft Stainless steel AISI 303

Diametro albero6 o 8 o 10 mm / 6 or 8 or 10 mm - RE530 11 mm

Shaft diameter

Giri-minuto 6000* continuo / 10000 temporaneo* velocità massima di funzionamento con anello di

tenuta IP65 applicato sull’albero: 3000 giri/minRevolutions per minute 6000 continuous* / 10000 temporary

* Max operating speed with IP65 sealing ring appliedon the shaft: 3000 rpm

Coppia avviamento / Starting torque ≤ 0,8 Ncm

Momento di inerzia / Inertia ≤ 25 g cm 2

Carico ammesso 80 N assiale / 100 N radialeMax load 80 N axial / 100 N radial

Resistenza alle vibrazioni (10÷2000 Hz)100 m/sec2

Resistance to vibrations (10÷2000 Hz)

Resistenza all’urto (11 ms)50 G

Shock resistance (11 ms)

Grado di protezione - Protection degree IP 64 (optional IP 65)

Temperatura di esercizio-10 ÷ + 70°COperating temperature

Temperatura di immagazzinaggio-20 ÷ 80°C

Stocking temperature

••

CARATTERISTICHE MECCANICHE E AMBIENTALI

MECHANICAL AND ENVIRONMENTAL SPECIFICATIONS

ELETTRONICA

ELECTRONICS

Tensione alimentazioneSupply

10 ÷ 24 Vdc5 Vdc ± 5%

U2

U1

Uz

U1

Uz

U2

Tensione alimentazioneSupply

10 ÷ 24 Vdc5 Vdc ± 5%

• Open collector - pull-up resistor - push-pull

• Line driver

U1

U2

Uz

Con schema collegamenti 1-3-4: segnale U2 in r itardo r ispetto al segnale U1 con rotazione in senso orario (vista dall’albero). Con schem a co l legam ent i 2 : segnale U2 in r i tardo r ispet to al segnale U1 con rotazione in senso antiorario (vista dall’albero).

With connection diagram 1-3-4: signal U2 lags signal U1 withclockwise rotation (seen from the shaft side). W i th connect ion d iagr am 2 : s ignal U2 lags s ignal U1 w i th anticlockwise rotation (seen from the shaft side).

Page 301: Tesis_Gonzalez_Sergio.pdf

Apendice E. Hojas de Datos 284

S.p.A. I -20094 CORSICO (M I) ITALIA - VIA VITTORIO VENETO 4 - TEL. (++39) 02 4519561 R.A.FA X ( + + 3 9 ) 0 2 4 5 1 0 3 4 0 6 - E - M A I L : e l a p s p a @ t i n . i t - U R L w w w . e l a p . i t

02/1

0

con riserva di variazione

variations admitted without notice

COME ORDINARE / ORDERING INFORMATION

COLLEGAMENTI - CONNECTIONS

A = Segnale 1 A = Signal 1

B = Segnale 2 B = Signal 2

C = Segnale Z (solo per i tipi con impulso di zero) C = Signal Z (for types with zero pulse only)

D = + Vdc D = + Vdc

E = Non collegato E = Non connected

F = 0 V E = 0 V

G = Non collegato G = Non connected

SCHEMA 1 SCHEME 1

A = 0 V A = 0 V

B = Non collegato B = Non connected

C = Segnale 1 C = Signal 1

D = Segnale Z (solo per i tipi con impulso di zero) D = Signal Z (for types with zero pulse only)

E = Segnale 2 E = Signal 2

F =+ Vdc E = + Vdc

G = Non collegato G = Non connected

SCHEMA 2 SCHEME 2

CAVO CABLE OUTLETBianco = Segnale 1 White = Signal 1

Verde = Segnale 2 Green = Signal 2

Marrone = Segnale Z Brown = Signal Z

(solo per i tipi con impulso di zero) (for types with zero pulse only)

Rosso = + Vdc Red = + Vdc

Blu = 0 V Blue = 0 V

Schermo = Massa Shield = Earth

SCHEMA 3 (senza impulso di zero) SCHEME 3 (without zero pulse)A = Segnale 1 A = Signal 1

B = Segnale 2 B = Signal 2

C = Segnale 1 C = Signal 1

D = + Vdc D = + Vdc

E = Segnale 2 E = Signal 2

F = 0 V E = 0 V

G = Non collegato G = Non connected

A = Segnale 1 A = Signal 1

B = Segnale 2 B = Signal 2

C = Segnale Z C = Signal Z

D = + Vdc D = + Vdc

E = + Vdc E = + Vdc

F = 0 V F = 0 V

G = Segnale 1 G = Signal 1

H = Segnale 2 H = Signal 2

I = Segnale Z I = Signal Z

J = Non collegato J = Non connected

• Open collector - pull-up resistor - push-pull • Line - driver••

DIMENSIONI D’INGOMBRO - DIMENSIONS

SCHEMA 4 (con impulso di zero) SCHEME 4 (with zero pulse)

E520

TIPO - TYPE

SCHEMA DI COLLEGAMENTOCONNECTION SCHEME

E520 senza impulso di zero / without zero pulseE521 con impulso di zero / with zero pulseRE520 senza impulso di zero, custodia in alluminio / without zero pulse, aluminium caseRE521 con impulso di zero, custodia in alluminio / with zero pulse, aluminium caseSerie RE530/RE531: custodia in alluminio, flangia RE0444 / Series RE530/RE531: aluminium case, flange RE0444

1 schema 1/scheme12 schema 2/scheme 23 schema 3/scheme 34 schema 4/scheme 4

ELETTRONICAELECTRONIC

PP push-pullLD line driver 5V o 10/24VOC open collector NPNOP open collector PNPS pull-up resistor NPNSP pull-up resistor PNP

– – 500 1024 R 6 PP 2

COLLEGAMENTI / CONNECTION OUTLET

_ _ uscita a connetore / connector outletC uscita a cavo / cable outlet

NUMERO IMPULSI/GIROPPR NUMBER

2 - 25000

ALIMENTAZIONESUPPLY

10/24 Vdc - 5 Vdc

USCITA COLLEGAMENTICONNECTION POSITION

A assiale / axial - R radiale / radial

DIAMETRO ALBEROSHAFT DIAMETER

6 - 8 - 10 mm11 mm (serie RE530/531)

* ALBERINO DISPONIBILE NEI DIAMETRI 8 mm - 10 mm (lunghezza 20 mm) - AVAILABLE SHAFT DIAMETERS 8 mm - 10 mm (length 20 mm)

E520 / E521RE520 / RE521

RE530/RE531