tesis_gonzalez_sergio.pdf
TRANSCRIPT
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
A todos los que me conocen...
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
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
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
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
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
C.3. Directivas que definen secciones. . . . . . . . . . . . . . . . . . . . 201
C.4. Directivas que inicializan constantes tanto de datos como memoria. 202
viii
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
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
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
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
Agradecimientos
A Mario,
A Daniel,
A todos en el Laboratorio de Instrumentacion y Control.
xiii
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
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
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
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
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
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.
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.
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
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
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
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.
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
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,
Capıtulo 1. Introduccion 10
135° 45°
0°
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.
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.
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
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
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.
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.
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
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.
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.
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.
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
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
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.
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.
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).
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.
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)
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:
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:
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:
dθ
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:
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
dϕ
dθ
dθ
dt(2.16)
Derivando (2.15), respecto a θ, se obtiene:
dϕ
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):
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:
Capıtulo 2. Modelado del Motor de Accionamiento Incremental 32
Jd2θ
dt2+ D
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
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.
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.
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:
dθ
dt= θ = x2 (2.27)
entonces:
x2 =d2θ
dt2(2.28)
Mediante (2.28), la (2.22) puede ser reescrita de la siguiente manera:
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)
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:
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).
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)
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
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
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/.
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.
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
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.
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)
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:
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)
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)
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)
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)
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
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
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)
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.
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.
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.
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
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)
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.
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.
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
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
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
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
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
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.
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.
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
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)
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
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
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)
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)
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)
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
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.
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
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
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
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)
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
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:
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
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
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:
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)
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:
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)
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).
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)
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.
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.
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.
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
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.
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
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.
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).
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)
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
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
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
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.
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)
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
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
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.
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
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).
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.
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
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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
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.
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.
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
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.
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.
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
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.
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.
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:
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.
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
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
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
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.
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
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
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.
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.
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
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 %.
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.
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.
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.
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.
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
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
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:
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:
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
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.
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.
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
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
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
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
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
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
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
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
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
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
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
Apendice A. Publicaciones 168
Apendice A. Publicaciones 169
Apendice A. Publicaciones 170
Apendice A. Publicaciones 171
Apendice A. Publicaciones 172
Apendice A. Publicaciones 173
Apendice A. Publicaciones 174
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
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
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-
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.
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.
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
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
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
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
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
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
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
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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).
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.
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.
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.
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.
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.
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.
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)
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
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
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
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.
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.
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
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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
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.
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.
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
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
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
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.
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.
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
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
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.
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
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.
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.
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.
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
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).
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
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
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
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.
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.
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
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
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
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
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
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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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
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.
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.
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
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)
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
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
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
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 ;
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)
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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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.
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
- - - -
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
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 §
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.
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
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.
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.
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.
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)
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.
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)
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.
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).
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