Você está na página 1de 301

NUEVAS TECNICAS EN EL ACCIONAMIENTO DE MAQUINAS DE MOVIMIENTO INCREMENTAL

Sergio Alejandro Gonzlez a

Este Trabajo de Tesis fue presentado al Departamento de Electrnica o de la Facultad de Ingenier de la Universidad Nacional de Mar del Plata a el 3 de Octubre de 2006, como requisito parcial para la obtencin del t o tulo de

Doctor en Ingenier Mencin Electrnica a. o o

Director: Dr. Ing. Mario Benedetti Co-Director: Dr. Ing. Daniel Oscar Carrica

A todos los que me conocen...

Indice general

Agradecimientos Resumen Prefacio Nomenclatura 1. Introduccin o 1.1. Problemas y requerimientos de los accionamientos incrementales . 1.1.1. Excitadores para el motor h brido . . . . . . . . . . . . . . 1.1.2. Prdida de sincronismo . . . . . . . . . . . . . . . . . . . . e 1.1.3. Los perles de velocidad y el tiempo de clculo . . . . . . a 1.1.4. Modo de funcionamiento en micropasos . . . . . . . . . . . 1.1.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . .

XIII

XIV

XV

XVI

1 3 3 3 5 9 11 11 12 16 16 19 26

1.2. Objetivos de la tesis . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Organizacin del trabajo de tesis . . . . . . . . . . . . . . . . . . o 2. Modelado del Motor de Accionamiento Incremental 2.1. Modelizacin de la dinmica . . . . . . . . . . . . . . . . . . . . . o a 2.2. Mquinas de movimiento incremental . . . . . . . . . . . . . . . . a 2.3. Modelo dinmico con corrientes impuestas . . . . . . . . . . . . . a iii

2.4. Modelo dinmico con tensiones impuestas . . . . . . . . . . . . . a 2.5. Descripcin del modelo de corrientes impuestas mediante ecuacioo nes de estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6. Validacin del Modelo . . . . . . . . . . . . . . . . . . . . . . . . o 2.7. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Perles de movimiento en accionamientos incrementales 3.1. Perles de Velocidad . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1. Perl trapezoidal . . . . . . . . . . . . . . . . . . . . . . . 3.1.2. Perl exponencial . . . . . . . . . . . . . . . . . . . . . . . 3.1.3. Perl parablico . . . . . . . . . . . . . . . . . . . . . . . . o 3.1.4. Perl sinusoidal . . . . . . . . . . . . . . . . . . . . . . . . 3.1.5. Perl con curvas-S . . . . . . . . . . . . . . . . . . . . . . 3.2. Estudio Comparativo . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1. Comparacin a igual per o odo de movimiento . . . . . . . . 3.2.2. Comparacin a igual amx . . . . . . . . . . . . . . . . . . o a 3.2.3. Comparacin a igual Vmx . . . . . . . . . . . . . . . . . . o a 3.2.4. Resumen de las comparaciones . . . . . . . . . . . . . . . . 3.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Temporizacin de los pulsos de accionamiento o 4.1. Sistemas de Temporizacin . . . . . . . . . . . . . . . . . . . . . . o 4.1.1. Temporizacin . . . . . . . . . . . . . . . . . . . . . . . . . o 4.2. Un mtodo de temporizacin . . . . . . . . . . . . . . . . . . . . . e o 4.2.1. Aceleracin constante . . . . . . . . . . . . . . . . . . . . . o 4.2.2. Desaceleracin lineal . . . . . . . . . . . . . . . . . . . . . o 4.2.3. Aceleracin no constante . . . . . . . . . . . . . . . . . . . o 4.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv

32

34 36 40 43 44 45 46 47 48 49 52 52 56 58 59 59 61 63 64 65 66 76 79 91

5. Tcnica de Temporizacin Propuesta e o 5.1. Anlisis de la temporizacin con a o algoritmos convencionales . . . . . . . . . . . . . . . . . . . . . . 5.2. Nueva tcnica de temporizacin . . . . . . . . . . . . . . . . . . . e o

94

94 97

5.3. Impacto de los perles en la Implementacin . . . . . . . . . . . . 103 o 5.4. Implementacin en DSP . . . . . . . . . . . . . . . . . . . . . . . 103 o 5.4.1. Formulacin general para los perles de velocidad . . . . . 104 o 5.4.2. Resultados comparativos . . . . . . . . . . . . . . . . . . . 105 5.4.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . 106

5.5. Implementacin en FPGA . . . . . . . . . . . . . . . . . . . . . . 107 o 5.5.1. Implementacin hardware del algoritmo . . . . . . . . . . . 108 o 5.5.2. Reduccin del rea de la implementacin . . . . . . . . . . 109 o a o 5.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 6. Resultados experimentales 114

6.1. Implementacin en DSP . . . . . . . . . . . . . . . . . . . . . . . 114 o 6.2. Resultados experimentales de la implementacin en FPGA . . . . 123 o 6.2.1. Implementacin FPGA en micropasos . . . . . . . . . . . . 127 o 6.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 7. Sistema de Adquisicin de Movimientos o 131

7.1. Adquisicin de movimientos incrementales . . . . . . . . . . . . . 132 o 7.2. Sistemas de adquisicin de movimiento . . . . . . . . . . . . . . . 133 o 7.3. Sistema propuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 7.4. Tcnica de compresin . . . . . . . . . . . . . . . . . . . . . . . . 137 e o 7.4.1. Descompresin de los datos . . . . . . . . . . . . . . . . . 141 o 7.5. Resultados experimentales . . . . . . . . . . . . . . . . . . . . . . 144 7.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 v

8. Conclusiones y Trabajos Futuros 8.1. Publicaciones realizadas como parte

150

de esta Tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 8.2. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 A. Publicaciones B. Hardware para el prototipo experimental 157 185

B.1. Proyecto CLIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 B.2. Desarrollo de una ESDF exible . . . . . . . . . . . . . . . . . . . 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 compilacin . . . . . . . . . . . . . . . . . . 201 o C.2. El entorno de simulacin . . . . . . . . . . . . . . . . . . . . . . . 203 o C.3. El cdigo fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 o D. Desarrollos en FPGA E. Hojas de Datos 254 265

vi

Indice de tablas
2.1. Modo por pasos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Simbolog utilizada para el modelo de corrientes impuestas . . . a 2.3. Simbolog utilizada para el modelo de tensiones impuestas . . . . a 3.1. Resumen de los diferentes perles de velocidad. . . . . . . . . . . 3.2. Velocidades mximas . . . . . . . . . . . . . . . . . . . . . . . . . a 3.3. Aceleraciones mximas . . . . . . . . . . . . . . . . . . . . . . . . a 3.4. Tiempos totales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5. Velocidades mximas . . . . . . . . . . . . . . . . . . . . . . . . . a 4.1. Rampa de velocidad, resultados para n = 24 pasos . . . . . . . . . 4.2. Rampa de velocidad, resultados para n = 20 pasos . . . . . . . . . 4.3. Rampa de velocidad, resultados para n = 21 pasos . . . . . . . . . 5.1. Resultados comparativos . . . . . . . . . . . . . . . . . . . . . . . 5.2. Performance del DSP de coma otante TMS320C30-50 (5V) . . . 22 27 33 51 53 55 58 58 71 77 81 95 96

5.3. Resultados comparativos . . . . . . . . . . . . . . . . . . . . . . . 106 5.4. Resultados comparativos . . . . . . . . . . . . . . . . . . . . . . . 106 7.1. Diccionario de compresin. . . . . . . . . . . . . . . . . . . . . . . 140 o C.1. Registros de la CPU. . . . . . . . . . . . . . . . . . . . . . . . . . 199 C.2. Instrucciones usadas por el compilador de para los C3x . . . . . . 200 vii

C.3. Directivas que denen secciones. . . . . . . . . . . . . . . . . . . . 201 C.4. Directivas que inicializan constantes tanto de datos como memoria. 202

viii

Indice de guras
1.1. Par en funcin del nmero de pasos por segundo (pps). Dos curvas o u pueden apreciarse, la curva de pull-out y la de pull-in, tambin llae mada de arranque-parada. La zona intermedia, determinada por estas dos curvas, es la zona de funcionamiento seguro de un determinado accionamiento. . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Sistema de accionamiento moderno para mquinas de movimiento a incremental. Un controlador de jerarqu superior, host, es el encara gado de establecer los parmetros para los perles de movimientos a que se generan en cada controlador. . . . . . . . . . . . . . . . . . 1.3. Varias velocidades constantes y sus distintos pulsos ndice. Donde V1 > V2 > V3 pero el tiempo entre ellos es t1 < t2 < t3 . . . . 1.4. Vectores de ujo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5. Posicin del rotor en funcin al modo de funcionamiento. Modo o o micropaso de 1/32 en comparacin con el modo de paso completo. o 2.1. Detalles constructivos del rotor. . . . . . . . . . . . . . . . . . . . 2.2. Secciones I y II segn lo indicado en la Fig. 2.1(a). El s u mbolo sig11 18 8 10 6 4

nica 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. . . . . . . . . . . . 2.4. Detalle de como se obtiene un campo magntico unipolar y como e las l neas de ujo se cierran entre el PM del rotor y el estator. . . 2.5. Alineacin de las fases en funcin de la secuencia de excitacin de o o o la Fig. 2.6(a). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6. Formas de onda de la excitacin. . . . . . . . . . . . . . . . . . . o 2.7. Detalle del origen de coordenadas . . . . . . . . . . . . . . . . . . 2.8. Circuito equivalente por fase. . . . . . . . . . . . . . . . . . . . . 2.9. Perl de posicin, donde puede apreciarse que el ringing no afecta o a la posicin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 2.10. Caracter stica del paso donde el impacto del ringing es m nimo. . 2.11. Perl de posicin, donde puede apreciarse aqu como el ringing o afecta a la posicin. . . . . . . . . . . . . . . . . . . . . . . . . . . o 3.1. Perl de velocidad trapezoidal. . . . . . . . . . . . . . . . . . . . . 3.2. Perl de velocidad exponencial. . . . . . . . . . . . . . . . . . . . 3.3. Perl parablico. . . . . . . . . . . . . . . . . . . . . . . . . . . . o 3.4. Perl sinusoidal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5. Comparacin realizada en el mismo tiempo. . . . . . . . . . . . . o 3.6. Caracter stica de aceleracin y jerking. . . . . . . . . . . . . . . . o 3.7. Comparacin con aceleraciones constantes . . . . . . . . . . . . . o 4.1. Esquema de un sistema de control de movimiento para mquinas a de movimiento incremental. . . . . . . . . . . . . . . . . . . . . . 62 40 45 46 48 48 53 54 57 38 39 24 25 31 33 23 20

4.2. Velocidad, pulsos ndice y localizacin temporal del clculo proo a piamente dicho para el i. El clculo, T ci , siempre se retrasa una a iteracin y en este caso se lo asume constante para todo el perl o de velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3. Rampa de velocidad con aceleracin constante y los pulsos velocio dad asociados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4. Rampa de velocidad. Notar que los instantes calculados estn mara cados con cruces, mientras que el trazo continuo es una interpolacin lineal de las mismas. . . . . . . . . . . . . . . . . . . . . . . . o 4.5. Rampa de velocidad con aceleracin constante y los pulsos de veo locidad asociados. La rampa de velocidad con velocidad nal constante, es parte del perl de velocidad trapezoidal. . . . . . . . . . 4.6. fi y fi+1 son slo las dos frecuencias de generacin posible . . . . o o 4.7. Simulacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 4.8. Rampa de velocidad con desaceleracin lineal. . . . . . . . . . . . o 4.9. Simulacin de desaceleracin mxima. . . . . . . . . . . . . . . . . o o a 4.10. Simulacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 4.11. Simulacin de un perl con curvas-S o . . . . . . . . . . . . . . . . 73 74 76 78 80 84 91 70 67 63

5.1. Diagrama de ujo del algoritmo. Se asume que el bloque de los perles de velocidad fue ejecutado previamente. . . . . . . . . . . 100 5.2. Perl de velocidad deseado, perl cuantizado y pulsos ndice. . . . 102 5.3. Sistema de control basado en FPGA. . . . . . . . . . . . . . . . . 110 6.1. Perl Trapezoidal adquirido con encoder ptico de 1024 ppr. . . . 116 o 6.2. Perl parablico adquirido con encoder ptico de 1024 ppr. . . . . 117 o o 6.3. Perl con curvas-S adquirido con encoder ptico de 1024 ppr. . . . 118 o 6.4. Perl Trapezoidal adquirido con encoder ptico de 500 ppr. . . . . 120 o xi

6.5. Perl parablico adquirido con encoder ptico de 500 ppr. . . . . . 121 o o 6.6. Perl con curvas-S adquirido con encoder ptico de 500 ppr. . . . 122 o 6.7. Perl de velocidad y posicin del accionamiento controlado por un o sistema basado en FPGA. . . . . . . . . . . . . . . . . . . . . . . 124 6.8. Perl de velocidad del accionamiento controlado por un sistema basado en FPGA. . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 6.9. Perl de velocidad del accionamiento utilizando el modo de micropasos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 6.10. Perles de posicin y velocidad para un sistema de accionamiento o en modo micropaso. . . . . . . . . . . . . . . . . . . . . . . . . . . 128 7.1. Mtodo del per e odo. . . . . . . . . . . . . . . . . . . . . . . . . . 133

7.2. Reduccin del nmero de pulsos con el aumento de la velocidad. . 138 o u 7.3. Diagrama en bloques del sistema. Dnde k es el nmero de motores.139 o u 7.4. Diagrama de ujo del proceso de descompresin de datos. . . . . . 143 o 7.5. Sistema de medicin . . . . . . . . . . . . . . . . . . . . . . . . . 144 o 7.6. Mediciones de per odo. . . . . . . . . . . . . . . . . . . . . . . . . 146 7.7. Error relativo de las mediciones. . . . . . . . . . . . . . . . . . . . 147 B.1. Diagrama funcional del sistema de alineacin. . . . . . . . . . . . 187 o 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 Instrumentacin y Control. o

xiii

Resumen
El trabajo de tesis est dirigido al modelado, accionamiento y excitacin de a o mquinas de movimiento incremental en condiciones de alta velocidad y precisin. a o Se desarrollaron modelos matemticos que reejan el comportamiento de estas a mquinas en estas condiciones. a En alta velocidad los controladores de estos mquinas enfrentan problemas a debido al tiempo de procesamiento requerido para calcular el tiempo entre los pasos. Se propusieron nuevos algoritmos de alta eciencia computacional para controladores digitales, que al requerir menores tiempos de procesamiento, hacen posible el accionamiento de estas mquinas a alta dinmica. Mediante las a a tcnicas propuestas se alcanzan velocidades mximas limitadas slo por aspectos e a o mecnicos-constructivos de las mismas. a Se dise un sistema especial de adquisicin de movimiento de gran utilidad no o para el registro de las variables cinemticas y la vericacin de los resultados a o experimentales en condiciones de alta exigencia. Gracias a las metodolog propuestas se alcanzaron velocidades un orden de as magnitud superiores a las logradas con los mtodos de accionamientos existentes. e Se construyeron dos prototipos experimentales, uno en DSP y el otro basado en FPGA para comparar y vericar los resultados. El motor utilizado fue un SLOSYN 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 acadmico de Doctor en Ingenier Electrnica, de la Universidad Nacional de e a o Mar del Plata y no ha sido presentada previamente para la obtencin de otro o t tulo en esta universidad u otras. La misma contiene los resultados de la investigaciones llevadas a cabo en el Laboratorio de Instrumentacin y Control, o dependiente del Departamento de Ingenier Electrnica, durante el periodo coma o prendido entre Marzo de 2001 y Septiembre de 2004, bajo la direccin del Dr. Ing. o Mario Bennedetti y la co-direccin del Dr. Ing. Daniel Carica, profesores titulares o del Departamento de Ingenier Electrnica. a o 14 de Septiembre

xv

Nomenclatura
t(k) Vr(k) V(k) v(n) Tc Tr duracin de la k-sima iteracin. o e o velocidad de referencia. perl de velocidad resultante. velocidad actual. tiempo que toma una iteracin. o resolucin del timer del procesador DSP que realiza la o o temporizacin mediante clculo algebraico. o a Vmax N velocidad mxima del motor. a nmero total de pasos a recorrer por un perl de moviu miento. n nk k Amax a(n) a(n)up iteracin actual. o nmero de Tc ciclos que entran dentro del k-simo paso. u e iteracin actual. o aceleracin mxima del motor. o a aceleracin actual. o acceleration actual en la pendiente positiva de la velocidad. a(n)down acceleration actual en la pendiente negativa de la velocidad. C1 , C2 , C3 , C4 constantes que especican el perl de velocidad. xvi

Thold J eA eB iA iB LA LB T VA,B lA,B rA,B M CC DA DSP

torque de retencin del motor paso a paso. o distancia angular entre polos del motor paso a paso. momento de inercia del motor paso a paso. f.e.m. inducida en la fase A. f.e.m. inducida en la fase B. corriente en la fase A. corriente en la fase B. inductancia de la fase A. inductancia de la fase B. posicin angular. o velocidad angular. par producido. tensin aplicada a los bobinados de la fase A y B. o inductancia de la fase A y B. resistencia serie del bobinado A y B. inductancia mutua. Corriente continua. Convertidor Digital Analgico. o Digital Signal Processor.

xvii

Cap tulo 1 Introduccin o


En los ultimos aos se advierte la aplicacin extensiva de los accionamientos n o basados en motores elctricos en detrimento de otros tipos de mquinas de moe a vimiento. En una primera etapa se advirti esta tendencia en las instalaciones o industriales y en algunos medios de transporte como el ferrocarril. En este momento asistimos a una revolucin consistente en: a) la masiva automatizacin de o o los procesos de produccin con la consecuente utilizacin de mquinas elctricas o o a e y b) el aumento de aplicacin de las mquinas elctricas a los automviles reemo a e o plazando a los motores a combustin c) las mquinas de control numrico (CNC) o a e que incluyen los robots, los centros de maquinados, los sistemas inteligentes de fresado entre otros. Estos procesos resultan en una incorporacin generalizada de diferentes tipos o de tecnolog asociadas al control de movimiento y a las mquinas elctricas. as a e Dentro de las mquinas elctricas, los motores de movimiento incremental son a e fundamentales cuando se requiere control de precisin en aplicaciones de autoo matizacin. El accionamiento de estos motores se realiza pulsando energ a sus o a diferentes bobinados determinndose as un movimiento discontinuo o discreto a

Cap tulo 1. Introduccin o

proporcional al nmero de impulsos por segundo entregados a las bobinas. Diu versos motores pueden ser encuadrados dentro de la categor de mquinas de a a movimiento incremental (Kenjo and Sugawara, 1995)(Kaynak, 1996), como por ejemplo, los motores: paso a paso (SM), de reluctancia conmutada (SRM), sincrnicos de ultra-baja velocidad (ULSSM). o Todos estos motores comparten la caracter stica del movimiento incremental, tambin llamada por pasos. Un movimiento incremental, a diferencia de un movie miento continuo, es aquel en que la posicin en un instante es igual a la posicin o o en el instante previo ms un incremento jo y constante. a La distancia mecnica que puede tener este incremento puede ser cualquier a unidad de distancia angular o lineal y depende de los aspectos constructivos de estas mquinas. La resolucin de la posicin angular en los motores incrementales a o o rotativos va desde los 0,01 grados hasta los 90 grados. En los motores incrementales de desplazamiento lineal va desde los micrones a los cent metros. Debido a sus caracter sticas de bajo consumo, alta conabilidad, bajo error y existencia de un par de mantenimiento despus de desenergizado, estos motores e se han popularizado en los equipos industriales. El bajo error de posicin permite o que estas mquinas puedan ser operadas a lazo abierto, con la reduccin de costos a o asociados al sensado de posicin. o Sin embargo, diversas problemticas especicas a las mquinas de movimiento a a incremental hacen que en entornos industriales, las mismas queden relegadas a las aplicaciones de baja dinmica. a

Cap tulo 1. Introduccin o

1.1.

Problemas y requerimientos de los accionamientos incrementales

Para lograr que estas mquinas tenga una performance adecuada a alta velocia dad existen todav numerosos problemas tecnolgicos a resolver. A continuacin a o o se analizarn las principales problemticas y el estado del arte de la mismas. a a

1.1.1.

Excitadores para el motor h brido

El motor paso a paso del tipo h brido es el ms usado en la industria ya que a el tamao del paso1 es slo limitado por la tecnolog de fabricacin. Este fue n o a o originalmente diseado como motor sincrnico para aplicaciones de baja velocin o dad, utilizando la tensin de l o nea como alimentacin. Con el advenimiento de o tecnolog de llaves de conmutacin de estado slido se desarrollaron excitadores as o o (drivers) que hicieron posible el accionamiento de estos motores an con bajas u tensiones y frecuencias distintas de las de l nea.

1.1.2.

Prdida de sincronismo e

A partir de la utilizacin de estos accionamientos en distintas velocidades fue o necesario conocer los l mites de carga para cada velocidad. Este l mite es el que provoca la prdida de sincronismo abrupta entre el rotor del motor y al campo e magntico circulante. Por esta razn los fabricantes proveen curvas de arranquee o marcha, tambin llamadas curvas de rgimen sincrnico o pull-out. Las mismas e e o representan la mxima velocidad para un determinado accionamiento y driver, a como puede verse en la Fig. 1.1.
1

Un menor tamao de los pasos es sinnimo de mejor precisin. n o o

Cap tulo 1. Introduccin o

par [n cm] par de retencin

pull-out pull-in

regin de arranqueparada

regin de velocidad sostenida mxima velocidad

velocidad sin par de carga

mnima velocidad de arranque

velocidad [pps]

Figura 1.1: Par en funcin del nmero de pasos por segundo (pps). Dos curo u vas pueden apreciarse, la curva de pull-out y la de pull-in, tambin llamada de e arranque-parada. La zona intermedia, determinada por estas dos curvas, es la zona de funcionamiento seguro de un determinado accionamiento. Los primeros drivers fueron los del tipo L/R. En estos, se aplica tensin o 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 ), slo debe aumentarse la resistencia serie. Esto trae o aparejado la desventaja de que, para mantener el mismo nivel de corriente, la tensin aplicada debe incrementarse. De esta manera, la eciencia del driver se o ve comprometida ya que gran parte de la potencia se disipa como calor en Rf . Otro problema para accionar estas mquinas a alta dinmica usando este tipo a a de drivers son las prdidas de conmutacin. Si bien la corriente disminuye con la e o frecuencia, y por lo tanto lo hace el producto I 2 R, las prdidas de conmutacin e o

Cap tulo 1. Introduccin o

en el esttor y en el rotor aumentan con la frecuencia. Esto es directamente a proporcional a la potencia disipada en el motor ya que a medida que crece la velocidad, tambin lo hace la tensin inducida (fuerza contra-electromotriz). Esto e o hizo que los drivers L/R tuvieran un l mite en cuanto a la velocidad alcanzada, l mite que perdurar durante mucho tiempo. a Nuevos tipos de drivers fueron desarrollados en funcin de la eciencia, el o nmero de llaves, la tensin y corriente disponible y el nmero de devanados enu o u tre otros, con el n de superar el l mite de velocidad que presentaban los drivers L/R. Actualmente las tres topolog de drivers ms usadas que son: el chopper as a bipolar, el bi-nivel y el driver con alimentacin de corriente. De estas topolog o as de excitacin, el chopper bipolar y el bi-nivel estn comercialmente impuestas o a con muy buenos resultados en cuanto a relacin costo/perfomance y han permio tido que, con la correcta excitacin, las mquinas alcancen velocidades mximas o a a limitadas slo por aspectos mecnicos-constructivos de las mismas. o a

1.1.3.

Los perles de velocidad y el tiempo de clculo a

Una vez superado el l mite que impon la excitacin, estas mquinas pua o a dieron alcanzar velocidades que las hicieron competitivas con otras que ya se hab impuesto en la industria. Un punto en comn de todas las aplicaciones an u industriales, como las mencionadas anteriormente, es la necesidad de pasar de una posicin a otra en el m o nimo tiempo. Teniendo en cuenta las caracter sticas de lazo abierto de estas mquinas es necesario la utilizacin de perles de movia o miento para su mximo aprovechamiento. Los perles de movimiento denen la a trayectoria del vector posicin, velocidad o aceleracin en funcin del tiempo. El o o o uso de perles surge de la necesidad de asegurar que las aceleraciones impuestas al conjunto motor-carga exijan un par de carga menor que el par elctrico e

Cap tulo 1. Introduccin o

mximo del motor. Un sistema de accionamiento para mquinas de movimiento a a incremental industriales est formado por el controlador digital de movimientos, a el driver de potencia y el o los motores. La interconexin de estos sistemas se o ilustra en la Fig. 1.2. El controlador digital de movimiento, es el que genera los perles de movimiento en funcin a parmetros tales como aceleracin mxima, o a o a carga, velocidad mxima, distancia, tiempo, entre otros. a

Figura 1.2: Sistema de accionamiento moderno para mquinas de movimiento a incremental. Un controlador de jerarqu superior, host, es el encargado de esa tablecer los parmetros para los perles de movimientos que se generan en cada a controlador.

Una vez establecido el tipo de perl de movimiento, el controlador de movimiento env los pulsos al driver del motor. A este tren de pulsos, que determina a

Cap tulo 1. Introduccin o

la velocidad instantnea, se lo conoce como pulsos de accionamiento o de velocia dad. El espaciamiento entre los pulsos determina la velocidad instantnea del eje, a a este espaciamiento se lo conoce como temporizacin. Con cada pulso enviado, o 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 tambin constante2 . A este tren de pulsos e se lo conoce como ndice y es una modulacin por posicin de pulsos (PPM). o o En la Fig. 1.3 pueden verse para varias velocidades constantes, los distintos pulsos ndice. Dada una cierta velocidad mxima V1 cuyo l a 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 tambin, una velocidad, V3 , tres veces menor que la mxima, es un tiempo tres e a veces mayor. Con este ejemplo es claro que la generacin de velocidades mltiplo o u de una arbitraria velocidad, es la intercalacin de un nmero entero de tiempo o u jos, ti en este caso. Esta modulacin permiti una estandarizacin de los sistemas de control de o o o mquinas de movimiento incremental. Aparecieron sistemas que generaban los a pulsos ndice cuando se los excitaba con una tension arbitraria, denominados indexadores (indexers). Por medio de esta modulacin, indexadores y drivers que o pod ser de fabricantes distintos y ser utilizados en conjunto. Esto permiti una an o reduccin de los costos e hizo que estas mquinas comenzaran a utilizarse en o a sistemas CNC. Los primeros indexadores utilizaban lgica secuencial discreta. o Con esto se lograba que el usuario pudiera modicar la velocidad a travs de e llaves de conguracin, (Fredriksen, 1974). o
Los pulsos de accionamiento que llegan al driver no deben confundirse con los pulsos de potencia que parten del driver hacia el motor. Los primeros son de baja potencia mientras que los segundos comandan la energ para ejecutar la motorizacin propiamente dicha. a o
2

Cap tulo 1. Introduccin o

i(t)

Dti=100us

t i-3 i-2 i-1 i i+1 i+2 i+3

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

i(t)
Dti=200us t i-1 i i+1

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

i(t)
Dti=300us t i-1 i i+1

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

Figura 1.3: Varias velocidades constantes y sus distintos pulsos ndice. Donde V1 > V2 > V3 pero el tiempo entre ellos es t1 < t2 < t3 . Sin embargo, caracter sticas tales como la implementacin de perles de veo locidad hizo dicultoso la continuidad del desarrollo usando esta metodolog a. Cuando los microprocesadores (P) se masicaron debido a la tecnolog de intea gracin a muy gran escala (VLSI), sistemas de control de movimiento basados en o ellos aparecieron donde prestaciones como conguracin y re-programabilidad de o los movimientos fuera requerido. El estado del arte respecto a los de sistemas de comando de accionamientos se centra en la implementacin mediante la utilizao cin de arreglos lgicos programables (ALPs o ASICs) y/o procesadores (Kenjo o o and Sugawara, 1995) (Crook, 1984). Actualmente los perles ms usados son los que poseen aceleracin no-constante a o

Cap tulo 1. Introduccin o

(Meckl and Arestides, 1998), (Kim and Kim, 2005). Esta caracter stica requiere una importante potencia de clculo para generar el perl de velocidad. Esto vuela ve a limitar la velocidad mxima disponible de estas mquinas debido al tiempo a a de computacin (Tc ) entre paso y paso con los algoritmos actuales. Es por esta o razn, que el l o mite actual para el accionamiento a alta dinmica de las mismas, a se encuentre en el sistema de control encargado de calcular e indexar los pulsos de movimiento. Existen otros factores que han impulsado la bsqueda de soluciones para exu tender el l mite de velocidad impuesto por el sistema de accionamiento. Uno de ellos ha sido la utilizacin del modo de funcionamiento en micropasos. o

1.1.4.

Modo de funcionamiento en micropasos

Con el advenimiento de mejores tecnolog de convertidores digitales-analgias o 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 ujo del estator ms suavemente que en los modos de paso y medio paso. a De esta manera se logra menor vibracin y ruido audible mejorando la resolucin o o de posicin en fracciones 1/n del paso original del motor. Esto se consigue moduo lando la corriente que se inyecta, en cada paso, de forma distinta para cada fase. En un modo de paso o medio-paso, el ujo estatrico es rotado en incrementos o de 90 y 45 respectivamente, con cada paso con que es accionada la mquina, a como puede verse en la Fig. 1.4(a). Al poder modicar la corriente efectiva que se inyecta en cada fase por separado, se puede obtener virtualmente cualquier posicin en todo el rango de 0 a 360 . Esto se aprecia en la Fig. 1.4(b). o Existen varios accionamientos de modo micropaso disponibles de forma comercial. Existen drivers que otorgan modos de micropaso de 1/8, 1/16, 1/32,

Cap tulo 1. Introduccin o

10

135

IB 90 180 0

45

110
120%

IB 90
100%

IA

100%

170

100%

10

IA

180
80%

300 225 270 315


100%

215

60%

(a) Vectores de ujo correspondientes a la excitacin por paso y medio o paso. La longitud de cada vector es proporcional al par de retencin. o

(b) Vectores de ujo correspondientes a la excitacin en modo microo paso. La direccin y la longitud son o variables.

Figura 1.4: Vectores de ujo. 1/64 hasta 1/128. En la Fig. 1.5 pueda apreciarse el modo micropaso de 1/32 en comparacin con el modo de paso completo para un motor de 200 ppr (1,8 ). El o funcionamiento con micropasos, a pesar de mejorar sustancialmente la precisin, o disminuir las vibraciones y eliminar prcticamente las resonancia3 , tiene la desa 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 microprocesador (P) no puede accionar al driver con la suciente velocidad en el tiempo calculado.
Incluso el modo micropasos no elimina por completo la resonancia a bajas velocidades ya que la naturaleza sub-amortiguada propia de la mquina no cambia. El trabajo de Yang and a Kuo (2003) propone la minimizacin de la resonancia en modo mircopaso a travs de un control o e de corriente en un marco de referencia sincrnico. o
3

Cap tulo 1. Introduccin o

11

1/ 2 -paso

/ Div.

modo de paso

micropaso 1 / 32 2 5 ms / Div .

Figura 1.5: Posicin del rotor en funcin al modo de funcionamiento. Modo mio o cropaso de 1/32 en comparacin con el modo de paso completo. o

1.1.5.

Conclusiones

Por lo mencionado anteriormente es crucial encontrar nuevas tcnicas que e permitan el desarrollo de controladores capaces de accionar estas mquinas sin a 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 tcnicas algor e tmicas que requieran menor tiempo de procesamiento y permitan el desarrollo de controladores capaces de accionar mquinas de movimiento incrementales con a perles de velocidad, en modo paso y micropaso. Para lograr este objetivo, esta tesis aborda los siguientes objetivos parciales: 1. Desarrollo de nuevos modelos matemticos que reejan el comportamiento a de las mquinas de movimiento incremental en condiciones de alta dinmica. a a 2. Estudio comparativo de los perles de velocidad que se ajusten a la dinmica a de la carga a n de garantizar movimientos sin prdidas de pasos. e

Cap tulo 1. Introduccin o

12

3. Desarrollo de nuevas tcnicas algor e tmicas que permitan el accionamiento de mquinas a su mxima velocidad. a a 4. Extensin de los resultados a multiplicidad de accionamientos con un slo o o sistema inteligente. 5. Desarrollo de un sistema de adquisicin y registro de las variables cinemtio a cas, de gran precisin, para gran velocidad y adaptado a requerimientos o espec cos.

1.3.

Organizacin del trabajo de tesis o

El trabajo de tesis se divide en ocho cap tulos individualizados temticamente. a A continuacin se presenta una descripcin de los mismos, la temtica abordada o o a y los aportes que ah se incluyen. El Cap tulo 1 sintetiza el estado del arte del control de movimientos para mquinas de movimiento incremental. Se dene la mquina de movimiento ina a cremental y se introduce una clasicacin de las mismas. Se plantean los requeo rimientos y los problemas cuando las mismas son accionadas a alta velocidad. Se presenta una cronolog de las problemticas que existieron para el manejo a a a alta dinmica y como las mismas fueron eventualmente resueltas. Finalmente se a establece la razn de la imposicin del l o o mite actual de velocidad, el cual recae en el controlador digital. Este controlador debe ser capaz de calcular y generar el perl de movimiento para uno o ms ejes, incluso, en el ms exigente modo a a micropaso. Para evaluar nuevos algoritmos de accionamiento es indispensable tener una herramienta de simulacin. En el Cap o tulo 2 se encuentra el desarrollo de un nuevo enfoque en el modelo linealizado del motor pasos a paso h brido. Un modelo

Cap tulo 1. Introduccin o

13

linealizado para el motor paso a paso h brido es encontrado a partir de la excitacin aplicado al mismo, tanto en tensin como en corriente. El modelo obtenido, o o en ecuaciones diferenciales, es llevado al espacio de estados de forma de obtener un modelo de simulacin basado en Matlab. Las simulaciones obtenidas son o contrastadas con las simulaciones de referencia. En el Cap tulo 3 se presentan los perles de movimiento ms utilizados en a los accionamientos incrementales. Se analizan su caracter sticas y se presenta una notacin generalizada para los mismos. Esta generalizacin presenta ventajas o o para implementar los perles de velocidad en los sistemas de control digitales implementados luego. Se realiza luego un estudio comparativo de los perles de movimiento propuestos encontrndose cuales son los ms indicados en funcin de a a o la aplicacin espec o ca. En el Cap tulo 4 se introduce la generacin de los pulsos de velocidad. Se o plantea una cronolog de su desarrollo y estudio, as como las desventajas de a los mtodos basados en lgica discreta. Luego se analiza la temporizacin de los e o o pulsos de accionamiento en los sistemas de generacin digitales y su impacto en o los perles de velocidad. Se origina una metodolog para la temporizacin de los a o pulsos de accionamiento con la que se desarrollan las ecuaciones que gobiernan la generacin tanto de perles de aceleracin constante como no-contante. o o En el Cap tulo 5 se analizan las tcnicas de temporizacin existentes, encuae o dradas por el marco terico encontrado en el Cap o tulo 4, desde el punto de vista de la implementacin. Se realiza un anlisis del tiempo de procesamiento necesao a rio para el desarrollo del perl de velocidad trapezoidal. Se arriba a la conclusin o de que los algoritmos convencionales no pueden alcanzar altas velocidades, mucho menos en el comando de mltiples motores. Una nueva tcnica de accionamiento u e es presentada y analizada desde el punto de vista del tiempo de procesamiento y

Cap tulo 1. Introduccin o

14

los recursos hardware involucrados. Un anlisis de las nuevas tcnicas y la generaa e cin de los perles de velocidad es realizada, tanto para los perles de aceleracin o o contante como para los de aceleracin no-constante. Luego se realiza la implemeno tacin de la tcnica propuesta. El desarrollo de la implementacin se divide en o e o dos partes. La primera aborda una implementacin basada en DSP y la segunda o parte plantea una implementacin basada en arreglos lgicos programables. o o En el Cap tulo 6 se realizan pruebas y mediciones de las implementaciones propuestas en el Cap tulo 5. Se obtienen conclusiones de la implementacin de o los diferentes perles en DSP y de la exibilidad del sistema en cuanto a la reprogramabilidad de los mismos y la capacidad del algoritmo frente a requerimiento de velocidad y comando de multiples ejes. Se realizan dos implementaciones para FPGA, con distintos tipos de multiplicadores, arribndose a conclusiones en a cuanto a los recursos lgicos empleados. A modo de evaluar la performance de la o implementacin en FPGA se midieron los tiempos de procesamiento equivalentes o a la implementacin con DSP. De las mediciones realizadas con la implementao cin en FPGA se obtienen conclusiones en cuanto a la performance del sistema o para muy alta velocidad, incluso, en modo de accionamiento micropaso. Como resultado adicional de este trabajo se desarrollaron tcnicas de medicin e o especialmente adaptadas a este tipo de mquinas y a las prestaciones alcanzaa das. En el Cap tulo 7 se analiza y lleva a cabo un nuevo sistema de adquisicin o de variables cinemticas para altas velocidades. Se realiz un nueva tcnica de a o e compresin lossless para datos provenientes de encoders de precisin cuando los o o mismos son operados a muy alta velocidad. Para vericar 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. Introduccin o

15

Referencias
Crook, J. (1984). Low cost microprocessor based speed control. In Kuo, B. C., editor, Proceedings of the Thirteeth Annual Symposium, Incremental Motion Control System and Devices, pages 2530, Champaign, Illinois. Incremental Motion Control System Society, Board of Trustees of the University of Illinois. Fredriksen, T. (1974). Design of digital control systems with step motors. In Kuo, B. C., editor, Theory and Applications of Step Motors - Symposium on Incremental Motion Control Systems and Devices, 1972-1973, volume 8, pages 290315, St. Paul, Illinois. West Publishing Co. Kaynak, M. (1996). The age of mechatronics. IEEE Trans. Ind. Electron., 43:23. Kenjo, T. and Sugawara, A. (1995). Stepping Motors and their Microprocessor Controls. Monographs in Electrical and Electronic Engineering. Oxford University Press, Oxford, U.K., 2nd reprint edition. Kim, C. H. and Kim, K. (2005). Energy-saving 3-step velocity control algorithm for battery-powered wheeled mobile robots. In Proceedings of the 2005 IEEE International Conference on Robotics and Automation, ICRA2005, pages 23752380, Barcelona, Espaa. n Meckl, P. and Arestides, P. (1998). Optimized s-curve motion proles for minimum residual vibration. In Proceedings of the American Control Conference, volume 5, pages 26272631, Philadelphia, Pennsylvania. Yang, S. and Kuo, E. (2003). Damping a hybrid stepping motor with estimated position and velocity. IEEE Trans. Power Electron., 18(3):880887.

Cap tulo 2 Modelado del Motor de Accionamiento Incremental


2.1. Modelizacin de la dinmica o a

A los efectos de poder simular los sistemas basados en mquinas incrementales, a es necesario disponer de un modelo matemtico de los mismos. Entre los mtoa e dos de modelado utilizados actualmente se encuentra el modelado por elementos nitos (MEF). El mtodo MEF se obtiene a partir de la distribucin geomtrica e o e o estructural de las partes de la mquina y de la interrelacin de sus elementos a o con el campo electro-magntico. El mtodo MEF es usado por el fabricante para e e el desarrollo de simulaciones de rendimiento, rango de operacin y desgaste. A o pesar de su gran difusin actual el modelado MEF est concebido para el diseo o a n espec co de cada mquina y carece de generalidad. Adems requiere de software a a especico 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 mtodos es la modelizacin a partir de la linealizacin de la dinmie o o a ca (LD) del motor. El modelo LD tiene la ventaja de ser ms general y est descria a to ntegramente por ecuaciones diferenciales ordinarias (ODE) las cuales pueden ser resueltas mediante simulaciones con software de programacin general. Desde o la ptica del control de estas mquinas, tener un modelo linealizado es util debido o a a su inherente facilidad para el clculo tanto de la estabilidad del sistema como a de otros factores como torque instantneo, velocidad y posicin. Es por estos moa o tivos que un modelo linealizado del motor de imn permanente (PM) es preferido a cuando se busca estudiar el control de la dinmica de estas mquinas. a a Los trabajos pioneros en la modelizacin del motor de PM son Singh (1974) o y Pickup and Russell (1980). En estos trabajos se realiza una linealizacin de las o ecuaciones diferenciales no-lineales a n de obtener una transferencia a la cual se arriba a partir de simplicaciones. Con el n de lograr una mayor similitud con la mquina real y debido a la actual capacidad de cmputo es posible obtener simua o laciones directamente iterando numricamente el sistema de ODEs no-lineales. e De esta forma se evitan realizar simplicaciones con lo que se logra una mayor similitud con la mquina real. a En la bibliograf existen programas que muestran al usuario una modelizacin a o de la mquina de PM (Kikuchi et al., 2002) (Keyhani and Proca, 1999), sin a embargo, ninguno es apto para ser utilizado en programas de simulacin generales, o 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 resolucin o automatizada del sistema de ecuaciones completo y de forma directa a travs de e un iteracin numrica. La misma parte de los parmetros de la mquina y del o e a a modo de excitacin impuesto, ya sea por tensin o por corriente. o o

Cap tulo 2. Modelado del Motor de Accionamiento Incremental

18

II

imn permanente I

tazas

(a) El rotor est formado por dos tazas que forman una a unidad, denominada stack. Una tcnica utilizada por los e fabricantes para incrementar el par efectivo, es apilar varios stacks.
l

N S

imn permanente

(b) Detalle del rotor donde se aprecia el desfasaje de un diente entre la primera seccin (en blanco) y segunda seccin o o (en gris) del stack.

Figura 2.1: Detalles constructivos del rotor.

Cap tulo 2. Modelado del Motor de Accionamiento Incremental

19

2.2.

Mquinas de movimiento incremental a

En los motores paso a paso de los tipos h brido y de imn permanente (PM) a el rotor consiste en un ncleo de imn permanente al que se le apilan chapas u a de material ferromagntico. El apilamiento de las mismas se realiza de manera e de cubrir el imn en su totalidad, por lo que la estructura queda axialmente a 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 denticin, como se observa en la o Fig. 2.1. A estos apilamientos en forma de taza alrededor del PM se los denomina stacks en la bibliograf anglosajona. El fabricante apila ms stacks a medida a a 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 seccin del stack, en detalle o en la Fig. 2.1(b). A esta desalineacin se la llama pitch o y tiene un longitud o 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.

Este tipo de motor h brido fue concebido por K.M.Feiertag and J.T.Donahoo (1952) de General Electric quienes lo disearon como motor sincrnico para aplicaciones de baja velocidad. n o De ah que se lo conozca con el nombre de motor de induccin sincrnica y General Electric o o (hoy Superior Electric) lo comercializa como Slo-Syn. Es interesante acotar adems, que este a motor puede ser energizado con dos-fases de CA de 50 Hz, obtenindose con un motor de 1,8 , e 60 rpm.

Cap tulo 2. Modelado del Motor de Accionamiento Incremental


I 1 8 2 8 II 1 2

20

6 5

6 5

Figura 2.2: Secciones I y II segn lo indicado en la Fig. 2.1(a). El s u mbolo signica 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.
1 VA + 3 7 5

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 estn interconectados para formar un arreglo bipolar a de dos fases: los bobinados de los polos 1, 3, 5 y 7 estn conectados en serie para a formar la fase A, mientras que los bobinados de los polos 2, 4, 6, y 8 forman la fase B. Ntese lo mencionado en la Fig. 2.3 donde, adems, se detallan los bornes o a homlogos. o 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 rotacin constante se logra mediante una excitacin secuencial de las dos o o fases. A diferencia de los motores de reluctancia variable, los motores con imn a permanente requieren una alternancia del campo magntico. En funcin a esto, e o varios modos de excitacin son posibles para el motor de dos fases con devanado o monolar, presentado en la Fig. 2.1(a). En el caso de usar un driver tipo puente H para cada fase (el driver ms comn) las formas de excitacin son las mostradas a u o en la Fig. 2.6. Al aplicar una corriente entrante por las fases A y B y suponiendo la magnetizacin del rotor propuesta en la Fig. 2.2, el ujo magntico resultante en los o e bobinados 1 y 5 es radialmente entrante, S, como lo muestra la Fig. 2.2. Se aprecia en la misma gura como el ujo producido en los devanados 3 y 7 es radialmente saliente, N. Esta situacin hace que se alineen los dientes del rotor debajo de los o polos 1 y 5 de la seccin I (Fig. 2.5(a)) y 3 y 7 de la seccin II (Fig. 2.5(a)) ya que o o el rotor tiende a minimizar la reluctancia que le ofrece al ujo el espacio entre l e y el estator. La Fig. 2.6(a) muestra la forma de onda bipolar necesaria para un movimiento como el que se expres anteriormente. Si slo se quita la excitacin en la fase A, o o o luego la alineacin debe producirse entre los polos 2, 6 de la seccin I, Fig. 2.5(c) o o y los polos 4 y 8 de la seccin II, como se ve en la Fig. 2.5(d). La rotacin que se o o obtiene es en sentido positivo y es de tan slo un paso debido a la desalineacin o o entre rotor y estator2 . La secuencia para una rotacin constante en sentido horario o junto con el sentido del ujo para cada bobina se muestran en la Tabla 2.1.
Todas las guras presentadas aqu son esquemticas, tan slo se tiene un estator con 16 a o dientes y un rotor con 18 dientes. Las mquinas industriales maximizan la cantidad de dientes a por area donde es comn tener una denticin de hasta 80 dientes u o
2

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 convencin sobre el sentido del ujo o en cada bobina, i , es positivo si es entrante o negativo si es saliente y la excitacin aplicada o es unipolar. En la Fig. 2.6 se aprecia las formas de onda de la excitacin, para este modo o de trabajo. Cabe notar que el modo de excitacin de 2 fases encendidas es el modo ms o a usado cuando se requiere maximizar el par, mientras que el modo de medio paso tiene la particularidad de incrementar la posicin cada medio paso angular, por o lo que duplica la precisin del accionamiento. Claro est que en este modo de o a energizar los devanados la precisin del desplazamiento angular es menor que en o 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

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

(b) Campo magntico unipolar alrededor de un dee vanado.

Figura 2.4: Detalle de como se obtiene un campo magntico unipolar y como las e l neas de ujo se cierran entre el PM del rotor y el estator.

Cap tulo 2. Modelado del Motor de Accionamiento Incremental

24

1 8

1 2 8

S N

S S

N N

S S

S
5

S
5

(a) Fases 1 y 5 excitadas, seccin I. o

(b) Fases 3 y 7 excitadas, seccin II. o

1 8 2 8

1 2

N N
7

S N
3 7

N S S S

S
3

N S
6 5

N N
4 6

S N
4 5

(c) Fases 1 y 3 excitadas, seccin I. o

(d) Fases 4 y 8 excitadas, seccin II. o

Figura 2.5: Alineacin de las fases en funcin de la secuencia de excitacin de la o o o Fig. 2.6(a).

Cap tulo 2. Modelado del Motor de Accionamiento Incremental

25

vA

1
t

vB
t

(a) Una fase encendida.

vA

1
t

vB
t

(b) Dos fases encendidas.

vA

1
t

vB
t

(c) Medio-paso.

Figura 2.6: Formas de onda de la excitacin. o

Cap tulo 2. Modelado del Motor de Accionamiento Incremental

26

2.3.

Modelo dinmico con corrientes impuestas a

Uno de los modos de excitacin consiste en inyectar una corriente controlada o a los bornes del motor. Esto signica que la misma permanece constante para cualquier velocidad o cualquier dinmica de carga que se le imponga al motor. a A continuacin se plantearn las ecuaciones que gobiernan la obtencin del par o a o dinmico resultante al utilizar este modo de excitacin a las mquinas de moa o a vimiento incremental. Se desprecian los efectos producidos por las corrientes de Foucault, el torque de detencin, la inductancia mutua y el efecto de la histresis o e en la misma. Estos efectos no son tenidos en cuenta pues slo agregan grados de o dicultad a la resolucin, los cuales escapan a la comprensin bsica del modelo. o o a La ley fundamental de la conservacin de la energ establece que: o a Potencia de la fuente = Potencia Mecnica + Crecimiento de la Energ Magntica a a e Segn la disposicin de los devanados en la Fig. 2.3 y con la convencin u o o de signos de la Fig. 2.1(a), y de acuerdo a la ley fundamental que planteamos, tenemos: d d (1/2 i2 LA + 1/2 i2 LB ) A B + dt dt

(eA iA + eB iB ) = T

(2.1)

Cap tulo 2. Modelado del Motor de Accionamiento Incremental

27

Tabla 2.2: Simbolog utilizada paa ra el modelo de corrientes impuestas eA eB iA iB LA LB T f.e.m. inducida en la fase A f.e.m. inducida en la fase B corriente en la fase A corriente en la fase B inductancia de la fase A inductancia de la fase B posicin angular o velocidad angular par producido

Donde las variables en minscuu las son funciones del tiempo. Es decir, la potencia instantnea es la suma del torque por velocidad angular a instantnea, ms la derivada de la energ magntica almacenada en las fases, a a a e donde las simbolog utilizada se resume en la Tabla 2.2. a Se asume que el ujo magntico inducido por las corrientes del estator es e independiente del imn permanente. Esto es equivalente a interpretar como ora togonales a los circuitos magnticos, ya que el ujo ahora, es slo proporcional a e o 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 por ello se puede considerar, d 1 d (i2 LA ) A + dt 2 dt

(2.2)

eA iA = TA de igual forma para la fase B,

(2.3)

eB iB = TB

d 1 d (i2 LB ) B + dt 2 dt

(2.4)

La tensin en los terminales de cada fase es fundamentalmente la suma de o dos trminos: la f.e.m. generada por la variacin de ujo magntico que enlazan e o e las faces y la tensin producida por la corriente al atravesar la inductancia del o bobinado. Por lo tanto, para la fase A, se puede reescribir la (2.3) de la siguiente forma: d d (1/2 i2 LA ) A + dt dt

(egA + eLA ) iA = TA

(2.5)

donde eLA es la ca de tensin en la inductancia del bobinado de la fase A y da o egA es la f.e.m. generada por la variacin del ujo magntico. o e La tensin inducida por la corriente en la fase A, eLA , vale: o d (iA LA ) dt

eLA = Por lo que 2.5 queda: d (iA LA ) dt

(2.6)

egA +

iA = TA

d d (1/2 i2 LA ) A + dt dt

(2.7)

Desarrollando las derivadas temporales, se obtiene:

Cap tulo 2. Modelado del Motor de Accionamiento Incremental

29

iA egA + iA

d (iA LA ) d 1 d (LA ) d (i2 ) A = TA + + i2 LA A dt dt 2 dt dt

(2.8)

Sin embargo, como las corrientes son constantes en el tiempo, la (2.8) puede ser reescrita de la siguiente forma:

iA egA + iA

d (iA ) d (LA ) d d (iA ) i2 d (LA ) + i2 = TA + iA + A A dt dt dt dt 2 dt

(2.9)

Donde el segundo trmino del primer miembro, se cancela con el segundo e trmino del segundo miembro. De esta forma se llega a: e i2 d (LA ) d TA = iA egA + A dt 2 dt Dado que,
d dt

(2.10)

= = , la ecuacin (2.10) puede reescribirse como: o iA egA i2 d (LA ) iA egA i2 d (LA ) + A d = + A 2 dt dt 2 d

TA = El trmino e
i2 d(LA ) A 2 d

(2.11)

es muy pequeo en motores h n bridos ya que la variacin de o

LA con respecto a la posicin es despreciable debido principalmente a que el rotor o es un imn permanente, haciendo m a nima su contribucin al par estacionario. No o as en los motores de VR donde el par es funcin del campo magntico creado o e slo por las bobinas, llegndose a llamar por ello, par reluctante. o a Luego: iA egA

TA = Idnticamente para la fase B: e

(2.12)

Cap tulo 2. Modelado del Motor de Accionamiento Incremental

30

TB =

iB egB

(2.13)

Introduciendo (2.12) y (2.13) en (2.2), resulta el par instantneo: a iA egA iB egB +

T=

(2.14)

El ujo , que se establece entre el rotor y cada fase, tiene una distribucin o espacial del tipo sinusoidal, entonces:

= n M cos (p)

(2.15)

dnde M es el ujo mximo, n es el nmero de espiras de cada bobinado y p es o a u el nmero de dientes en un motor h u brido. Entonces, egA es la f.e.m. producida en la fase A: d d d = n dt d dt

egA =

(2.16)

Derivando (2.15), respecto a , se obtiene: d = n p M sen (p ) d

(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 , introduciendo (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 seccin opuesta: o

TB = p n M iB sin p ( )

(2.20)

donde es la distancia angular entre polos y vale = 2/p y el modelo del esttor tiene 2p polos magnticos, es decir, p-pares de polos. a e Pude observarse en la Fig. 2.7 la ubicacin de en el centro del polo 1, o lo que signica que el par neto producido por la fase B, expresado por (2.20), est desplazado , ya que las bobinas que contribuyen al mismo estn en la a a segunda seccin del stack. o

Figura 2.7: Detalle del origen de coordenadas Una vez obtenido el par mecnico, se utiliza la ecuacin mecnica de segundo a o a orden del motor, en donde la inercia, J, de motor y los efectos que producen la histresis y las corrientes parsitas representadas por el coeciente D son tenidas e a en cuenta. Queda, entonces:

Cap tulo 2. Modelado del Motor de Accionamiento Incremental

32

d2 d + D + p n M iA sin p + p n M iB sin p ( ) = 0 2 dt dt

(2.21)

o si se renen los coecientes en uno slo, tal que pnM = Km , resulta entonces: u o

d2 d + D + KM iA sin p + KM iB sin p ( ) = 0 2 dt dt

(2.22)

2.4.

Modelo dinmico con tensiones impuestas a

La ecuacin (2.22) describe el modelo dinmico del motor paso a paso para o a corrientes impuestas. El modelo dinmico con tensiones impuestas, a diferencia a del de corriente impuesta, debe tener en cuenta los efectos del circuito elctrico e de los bobinados. En la Fig. 2.8 se muestra el circuito elctrico equivalente para la fase A. Del e mismo surge la (2.23):

VA r iA lA

d (iB ) d d (iA ) M + KM cos (p) = 0 dt dt dt

(2.23)

Idnticamente para la fase B, obteniendo la (2.23): e

VB r iB lB

d (iB ) d (iA ) d M + KM cos (p ( )) = 0 dt dt dt

(2.24)

Las ecuaciones (2.22), (2.23) y (2.24) constituyen el modelo dinmico del a motor con tensiones impuestas, donde se utiliza la simbolog de la Tabla 2.3. a

Cap tulo 2. Modelado del Motor de Accionamiento Incremental

33

Tabla 2.3: Simbolog utilizada para el modelo de tensiones a impuestas VA,B lA,B rA,B M tensin aplicada a los bobinados de la fase A y B o inductancia de la fase A y B resistencia serie del bobinado A y B inductancia mutua

Donde las variables en minsculas son funciones del u tiempo. En rA,B pueden incluirse la resistencia de salida del driver y otros efectos resistivos.

LA

rA

VA

iA

di -M B dt
e gA dj =dt

+ -

Figura 2.8: Circuito equivalente por fase.

Cap tulo 2. Modelado del Motor de Accionamiento Incremental

34

2.5.

Descripcin del modelo de corrientes imo puestas mediante ecuaciones de estado

A n de utilizar el modelo dinmico del motor paso a paso descrito por (2.22) a en simulaciones bajo el entorno Matlab es ms conveniente llevar el modelo en a ecuaciones diferenciales al espacio de estados, de forma de tener un conjunto de ecuaciones del tipo: x 1 x2 x 3 x 4 = f1 (x1 , x2 , x3 , x4 ) = f2 (x1 , x2 , x3 , x4 ) = f3 (x1 , x2 , x3 , x4 ) = f4 (x1 , x2 , x3 , x4 ) (2.25)

La primera ecuacin es inmediata; la variable f o sica de salida del modelo, es el desplazamiento angular, por tanto:

= x1 Para la la velocidad angular: d = = x2 dt entonces: d2 dt2

(2.26)

(2.27)

x2 =

(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 donde u1 y u2 son las entradas al sistema. Resolviendo para x2 y queda: D x2 KM u1 sin px1 KM u2 sin p (x1 ) J

(2.29)

x2 = junto con:

(2.30)

x1 = x2

(2.31)

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

x1 = x2 x2 = D x2 KM u1 sin p x1 KM u2 sin p (x1 ) J

(2.32)

Operando de la misma forma para el modelo por tensiones impuestas, asumiendo que r = ra = rb y que L = la = lb segn la Fig. 2.8 queda reescrito por u las siguientes ecuaciones de estado:

x =x 1 2 x2 = dx2 KM u1 sin px1 KM u2 sin p(x1 ) J x = Lu1 M u2 Lrx3 +M rx4 KM Lx2 sin px1 +KM M x2 sin p(x1 ) 3 L2 M 2 x = Lu2 M u1 +M rx3 Lrx4 +KM M x2 sin px1 +KM Lx2 sin p(x1 )
4 L2 M 2

(2.33)

Cap tulo 2. Modelado del Motor de Accionamiento Incremental

36

Una simplicacin importante de las ecuaciones descritas en (2.33) puede ser o 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 dems trminos. Luego el sistema se simplica, quedando el siguiente a e sistema de ecuacin de ODEs de primer orden: o

x =x 1 2 x2 = dx2 KM u1 sin px1 KM u2 sin p(x1 ) J x = 3 x = 4


u1 rx3 KM x2 sin px1 L u2 rx4 +KM x2 sin p(x1 ) L

= f1 (x1 , x2 , x3 , x4 ) = f2 (x1 , x2 , x3 , x4 ) = f3 (x1 , x2 , x3 , x4 ) = f4 (x1 , x2 , x3 , x4 ) (2.34)

donde se ha empleado la la siguiente nomenclatura:

d=F Km = KE Km = Kh

2.6.

Validacin del Modelo o

Para validar este modelo se realizaron simulaciones para diferentes tipo de excitacin y se evalu la performance en distintas situaciones. Los parmetros del o o a modelo del motor a emplear en las simulaciones se obtuvieron de publicaciones de referencia por lo que la evaluacin del comportamiento del mismo es comparativa o a estos trabajos. Los parmetros del modelo de referencia del motor son los siguientes: a

Cap tulo 2. Modelado del Motor de Accionamiento Incremental

37

r = 45 p = 12 d = 104 N M =0 L = 0,275 H Km = 0,463 N m A ms rad

Kd = 0,016 N m J = 18 106 kg m2 Para resolver el sistema de ecuaciones planteado en (2.34) se utiliz Matlab. o El motor se excita con un esquema de pulsos que produce un perl de velocidad trapezoidal. La temporizacin de los pulsos de excitacin es introducido en el o o Cap tulo 4 mientras que el perl trapezoidal es denido en detalle en el Cap tulo 3. Las caracter sticas relevantes del perl trapezoidal son las siguientes: durante el primer tramo del perl 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 perl de velocidad debe producir un desplazamiento de 172 pasos, es decir, una promedio de 86 pps. En funcin a los datos relevados de este mquina, tanto en la bibliograf como o a a 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 analizar tanto la curva de posicin del perl trapezoidal requerido, Fig. 2.9(a), a o como la posicin resultante, Fig. 2.9(b). o

Cap tulo 2. Modelado del Motor de Accionamiento Incremental

38

Se puede apreciar en la Fig. 2.9(b) que bajo ringing controlado, la posicin o no se ve afectada; el perl es ejecutado correctamente. Incluso si se magnica la curva de posicin, para poder observar un paso en detalle, se observa que la o relacin entre el sobrepico del ringing y el paso esta determinada. o
Posicin. Vmx = 100 pps. Ti = 2e005 s. 80 80 Posicin. Vmx = 100 pps. Ti = 2e005 s.

70

70

60

60

50 Pasos Pasos 0.2 0.3 0.4 0.5 0.6 Tiempo, [s] 0.7 0.8 0.9 1

50

40

40

30

30

20

20

10

10

0 0.1

0 0.1 0.2 0.3 0.4 0.5 0.6 Tiempo, [s] 0.7 0.8 0.9 1

(a) Perl de posicin requerido. o

(b) Perl de posicin obtenido. o

Figura 2.9: Perl de posicin, donde puede apreciarse que el ringing no afecta a o la posicin. o 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 perl, no slo porque la oscilacin del mismo tiene una baja amplitud con respecto o o al paso, sino porque incluso a la mxima velocidad, el mismo no perturba la a ejecucin de un nuevo paso. o Cuando la velocidad pretendida del accionamiento aumenta, el ringing afecta an ms al perl de posicin, esto es debido a que el tiempo para realizar un paso u a o es menor a medida que aumenta la velocidad, segn: u 1 1 = fs v

tstep =

(2.35)

Cap tulo 2. Modelado del Motor de Accionamiento Incremental

39

Posicin. Vmx = 100 pps. Ti = 2e005 s. 46.5

46

Pasos

45.5

45

44.5 0.57 0.572 0.574 0.576 0.578 Tiempo, [s] 0.58 0.582 0.584

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 continuacin se simula la mquina con un perl de velocidad trapezoidal o a en la zona de velocidades medias que se extiende desde los 100 pps hasta los 2500 pps. Para esta nueva simulacin, se utilizan las mismas condiciones de inercia o y parmetros de ensayo. En la Fig. 2.11(a) se observa el motor dentro de rango de a Ts , cuya velocidad mxima es de 760 pps. Este perl de velocidad debe producir a 1368 pasos en total, es decir, una promedio de de 684 pps. Se aprecia en la misma gura como el motor simplemente perdi pasos, y sencillamente no pudo seguir o el perl requerido. Si la curva de posicin es magnicada hasta un tiempo prximo a 0,3 segundos, o o se ver que el motor simplemente no puedo seguir el ritmo requerido. En esta zona, a mostrada en la Fig. 2.11(b), el perl 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

Posicin. Vmx = 760 pps. Ti = 1e006 s.


90

Posicin. Vmx = 760 pps. Ti = 1e006 s.

1600
80

1400

70 60 50 Pasos 40 30

1200

1000 Pasos

800

600
20

400

10 0 10

200

0 0.1 0.2 0.3 0.4 0.5 0.6 Tiempo, [s] 0.7 0.8 0.9 1

0.05

0.1 Tiempo, [s]

0.15

0.2

(a) Perl de posicin afectado por el ringing. o

(b) Detalle del ringing en el perl de posicin. o

Figura 2.11: Perl de posicin, donde puede apreciarse aqu como el ringing afecta o a la posicin. o simulada. Es decir, a velocidades mayores el motor puede enfrentar situaciones con mayor momento de inercia que a menores velocidades, provocndose la perdida a de pasos. Esto se explica ya que al poseer ms inercia el motor trabaja suba amortiguado lo que reduce signicativamente el ringing, evitndose as la prdida a e de pasos.

2.7.

Conclusiones

En el presente cap tulo se plantean las ecuaciones que gobiernan el desplazamiento angular del rotor de un motor paso a paso del tipo h brido. La utilidad principal de disponer un modelo dinmico del mismo es el ensayo sistemtico de a a los diferentes perles de velocidad. Se elige el motor paso a paso tipo h brido ya que el mismo es una generalizacin de las dos principales familias de motores o los de reluctancia variable (VR) y los de imn permanente (PM). Se plante un a o modelo con dos tipo de conguraciones 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 tensin la variable de entrada controlada, por lo que o se obtiene un modelo con tensiones impuestas. Para ambos casos la variable de salida es la posicin angular. Una vez obtenidas las ecuaciones de estado, el moo delo no-lineal resultante se simul con Matlab, utilizando diferentes perles de o velocidad a modo de validacin del modelo. o Este modelo, basado en ecuaciones diferenciales no-lineales fue validado el modelo a travs de exhaustivas simulaciones y comparaciones de las mismas con la e bibliograf el modelo fue usado en los posteriores cap a, tulos del trabajo doctoral, as como en la mayor de los trabajos publicados. Se escribi un reporte y se a o 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 design of permanent magnet machines. IEEE Trans. Power Syst., 14(3):795801. Kikuchi, T., Kenjo, T., and Fukuda, S. (2002). Developing an educational simulation program for the PM stepping motor. IEEE Trans. Educ., 45(1):7078. K.M.Feiertag and J.T.Donahoo (1952). Dynamoelectric machine. Pickup, I. and Russell, A. (1980). A model for predicting the dynamic characteristic of hybrid (permanent-magnent) synchronous/stepping motors. In Kuo, B. C., editor, Proceedings of the 9th Annual Symposium, Incremental Motion Control System and Devices, pages 113, Champaign, Illinois. Incremental Motion 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 Motion Control Systems and Devices, 1972-1973, volume 8, pages 5972, St. Paul, Illinois. West Publishing Co.

Cap tulo 3 Perles de movimiento en accionamientos incrementales


Los perles de movimiento denen la trayectoria del vector posicin, velocidad o o aceleracin en funcin del tiempo. El uso de perles surge de la necesidad de o o asegurar que las aceleraciones impuestas al conjunto motor-carga exijan un par de carga menor que el par elctrico mximo del motor. En los accionamientos e a incrementales donde una de las ventajas reside en la operacin a lazo abierto, los o perles de velocidad aseguran movimientos sin prdidas de pasos. e Existen diferentes tipos de perles; histricamente el perl exponencial tuvo o gran aplicacin debido a que la referencia exponencial era fcilmente obtenible o a desde un simple circuito RC. Luego, con el advenimiento de los sistemas digitales, los perles lineales de fcil clculo como los triangulares y trapezoidales fueron los a a ms usados (Fredriksen, 1974). Sin embargo, las discontinuidades producidas en a la aceleracin de los perles trapezoidal y exponencial causan una reduccin de o o la vida util tanto del motor como del sistema mecnico acoplamiento-carga (Gei a ger, 1980). Actualmente, debido a caracter sticas de aceleracin y su derivada, los o perles con curvas suaves como el parablico, el sinusoidal y el perl basado en o 43

Cap tulo 3. Perles 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 dicultades en la implementacin (Hyung-Min and Seung-Ki, 2002)(M.C.Tsai et al., 2004). Adicioo nalmente, en un amplio espectro de aplicaciones del control de movimiento, que van desde el uso en los simuladores de areo-navegacin en donde la sensacin de e o o movimiento debe lograrse sin llegar a producir motion sickness (Kolasinski, 1995) (de la Cruz et al., 2004), ascensores con movimientos de aceleracin controlada o bajo normas sonoras y de vibraciones (Gibson, 1997); hasta en las mquinas de a tejer industriales donde el objetivo es realizar la mayor cantidad de movimientos minimizando la trayectoria posible a una velocidad dada, es importante aplicar el perl de velocidad apropiado.

3.1.

Perles de Velocidad

Se puede vislumbrar que existen varios parmetros y variables a considerar a para poder determinar el perl ms conveniente segn sea la aplicacin. En este a u o sentido, un estudio sucientemente general que contemple las diferentes alternativas a n de determinar cul es el mejor perl cuando se requiere optimizar a determinadas caracter sticas del movimiento. Para ello es necesario realizar sistemticamente un conjunto de comparaciones con el objetivo de encontrar las a ventajas de cada perl y lograr obtener el mejor perl segn la necesidad. u A continuacin se presentan los distintos perles y sus ecuaciones y, en la o seccin 3.2 se desarrollan anal o ticamente las comparaciones de los perles mencionados.

Cap tulo 3. Perles de movimiento en accionamientos incrementales

45

3.1.1.

Perl trapezoidal

Se muestra en la Fig. 3.1 el perl velocidad trapezoidal. La ecuacin de veloo cidad se expresa en (3.1)

v(t)

aceleracin mxima velocidad

rea = distancia (d)

desaceleracin

t
Ta Ts Td Tn

Figura 3.1: Perl de velocidad trapezoidal.

v(t) =

Vmx t a Ta

, 0 < t < Ta , Ta < t < Ta + Ts


t(Ts +Ta ) Td

donde Ta Ts Td T Vmx a

V a mx Vmx 1 a

(3.1)

, Ta + Ts < t < T

tiempo de aceleracin, o tiempo de velocidad mxima, a tiempo de desaceleracin, o tiempo total, velocidad mxima. a
T 0

El desplazamiento total recorrido por el motor, D, surge de en (3.2) D = Vmx a Td Ta + Ts + 2 2

v(t) dt, y resulta

(3.2)

Cap tulo 3. Perles de movimiento en accionamientos incrementales

46

La aceleracin instantnea es la derivada de la velocidad y se muestra en (3.3): o a V mx 1 a Ta 0 V a mx Td , 0 < t < Ta , Ta < t < Ta + Ts , Ta + Ts < t < T (3.3)

a(t) =

Por lo apreciado en (3.3) se arriba a la aceleracin mxima que se expresa en o a (3.4) |amx | = a
Vmx a Ta Vmx a Td

, Td < Ta , Ta < Td

(3.4)

3.1.2.

Perl exponencial

En la Fig. 3.2 se observa el perl exponencial. La velocidad instantnea a est expresada por (3.5) a t V mx 1 e5 Ta a = a Vmx t(Ta +T ) Vmx e5 Td s a , 0 < t < Ta , Ta < t < Ta + Ts , Ta + Ts < t < T (3.5)

v(t)

v(t)

aceleracin mxima velocidad rea = distancia (d) desaceleracin

t
Ta Td Tn

Figura 3.2: Perl de velocidad exponencial. El desplazamiento total del motor comandado con un perl exponencial es:

Cap tulo 3. Perles de movimiento en accionamientos incrementales

47

1 1 D = Vmx Ts + Ta (e5 + 4) Td (e5 1) a 5 5 En cuanto a la aceleracin instantnea: o a Vmx 5 Tta 5 a e , 0 < t < Ta Ta = , Ta < t < Ta + Ts 0 t(Ta +T ) a 5 Vmx e5 Td s , Ta + Ts < t < T Td

(3.6)

a(t)

(3.7)

De (3.7) se inere que la aceleracin mxima depende de la magnitud del o a tiempo de aceleracin o desaceleracin, ya que cuanto menor es el mismo, mayor o o es efectivamente la aceleracin mxima, como se observa en (3.8). o a Vmx 5 a , Td < Ta Td

|amx | = a

3.1.3.

Perl parablico o

5 Vmx , T < T a a d Ta

(3.8)

El perl parablico se muestra en la Fig. 3.3. La velocidad se dene en (3.9), o la cual es continua a lo largo del per odo de movimiento, T . t (T t) T2

v(t) = 4Vmx a

(3.9)

Este es un perl simtrico, donde el tiempo de aceleracin y desaceleracin e o o valen Ta = Td =


T . 2

Esta observacin se aplica tambin a los perles sinusoidal o e

y con curvas-S, aunque sin estar denido este ultimo por una unica curva. El desplazamiento total del motor, en funcin de la velocidad mxima, se expresa o a en (3.10): 2 D = Vmx T a 3

(3.10)

Cap tulo 3. Perles de movimiento en accionamientos incrementales

48

v(t)

aceleracin mxima velocidad rea = distancia (d) desaceleracin

t
Ta Td Tn

Figura 3.3: Perl parablico. o

La aceleracin instantnea se expresa por la (3.11) o a 4 (T 2t) T2

a(t) = Vmx a

(3.11)

a La aceleracin mxima tiene lugar en t = 0 y en t = T , siendo |amx | = 4 Vmx . o a a T

3.1.4.

Perl sinusoidal

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

v(t)

rea = distancia (d) aceleracin mxima velocidad

desaceleracin

t
Ta Td Tn

Figura 3.4: Perl sinusoidal.

v(t) =

Vmx a 2

1 cos

2 t T

(3.12)

Cap tulo 3. Perles de movimiento en accionamientos incrementales

49

El desplazamiento total se expresa en (3.13): Vmx a T 2

D=

(3.13)

La aceleracin instantnea del perl queda expresada por (3.14): o a t sin 2 T T

a(t) = Vmx a

(3.14)

La aceleracin instantnea, expresada por (3.14), posee un mximo en t = T , o a a 4


por lo que |amx | = T Vmx . a a

3.1.5.

Perl con curvas-S

Un perl de curvas-S, se obtiene al trazar una spline cbica (Greenspan and u Casulli, 1988)(Hildebrand, 1987) que una los puntos (0, 0), ( T , Vmx ) y (T, 0) a 2 obtenindose la velocidad instantnea denida por tramos que se muestra en e a (3.15) y cuya evolucin temporal es prcticamente idntica al perl sinusoidal, o a e con una diferencia mxima de slo 0,12 % respecto a ste. a o e 4Vmx a
4Vmx a (T T3 3 2 t T2

v(t) =

4 3 t T3

,0 < t <

T 2

(3.15)

t)2 (4t T )

,T <t<T 2

El desplazamiento total vale: Vmx a T 2

D=

(3.16)

La aceleracin queda expresada por: o 24Vmx t T 2t a T3 = 24V T 2 3T t+2t2


mx a T3 T 2

a(t)

,0 < t <

(3.17)

,T <t<T 2

Cap tulo 3. Perles de movimiento en accionamientos incrementales

50

Para obtener la aceleracin mxima se debe encontrar el tiempo en donde la o a pendiente de velocidad sea mxima, resultando que t = a cin mxima se expresa en (3.18): o a 3 Vmx a T
T . 4

Entonces, la acelera-

|amx | = a(t) |t= T = a


4

(3.18)

Cap tulo 3. Perles de movimiento en accionamientos incrementales

Triangular Vmx = 2 D a T Vmx= amx D a a 4 amx = T 2 D a


v(t)
Vmx

Tabla 3.1: Resumen de los diferentes perles de velocidad. Exponencial Parablico o Senoidal Curva-S Vmx = 2 D Vmx = 2D Vmx = 2 D Vmx = 2 D a a a a T T T T
3

Vmx = a |amx | = a
v(t) Vmx

1 a a D 5 mx 20 D T2

Vmx = a amx = a
v(t)
Vmx

3 a a D 8 mx 6 D T2

Vmx = a amx = a
v(t)
Vmx

2 a a D mx 2 D T2

Vmx = a amx = a
v(t)
Vmx

2 a a D 3 mx 6 D T2

t
Ta Td Ta Td

t Ta Td

t
Ta Td

t
Ta Td

51

Cap tulo 3. Perles de movimiento en accionamientos incrementales

52

3.2.

Estudio Comparativo

Se realiza a continuacin un anlisis comparativo entre perles tomando como o a exigencia comn que la distancia a recorrer sea la misma. Este requerimiento es u realista en pos del diseo de un sistema de control de movimientos en el que se n conoce a priori la distancia a recorrer, siendo incgnitas el resto de los factores o cinemticos. a Con la intencin de simplicar la notacin pero sin perder generalidad, se o o asumir para todos los perles que el Ts es nulo y que el tiempo de la aceleracin a o es idntico al de desaceleracin e igual a la mitad del tiempo total. Es decir: e o Ta = Td =
T , 2

que es el caso ms t a 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 denitiva servirn a los efectos comparativos. a

3.2.1.

Comparacin a igual per o odo de movimiento

Se considera, a continuacin, el caso en el que el tiempo total del desplazao miento est restringido. Por lo tanto se realiza una primera comparacin en la a o que adems del mismo desplazamiento, se establece un mismo tiempo de ejecua cin para todos los perles. El objetivo es conocer, bajo estas circunstancias, la o evolucin de las variables bsicas del movimiento como son velocidad mxima, o a a aceleracin y su derivada, para los distintos perles. o 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 perles desarrollan la misma velocidad mxima excepto el parablico que, en este sentido, es ms a o a ventajoso ya que permite el mismo movimiento, en el mismo tiempo, pero con menor velocidad mxima. Esta informacin es util a la hora de disear un sistema a o n

Cap tulo 3. Perles de movimiento en accionamientos incrementales

53

que requiera realizar un movimiento determinado pero con actuadores mecnicos a restringidos tambin en velocidad. Lo expresado se resume en (3.19) y adems se e a detalla cuantitativamente en la Tabla 3.2. Tabla 3.2: Velocidades mximas a Vtrg = 2 k1 Vexp = 2 k1 Vpar = 1,5 k1 Vsen = 2 k1 VSc = 2 k1 donde k1 =
400 a b 350 c d e 300
d1 . T

Perfil de velocidad, Ta = 10 s, Td = 10 s, Dtotal = 4000 pasos

Velocidad, [pasos/s]

250

200

150

100

50

10 Tiempo, [s]

12

14

16

18

20

Figura 3.5: Comparacin realizada en el mismo tiempo. o

Vpar < Vtrg = VSc = Vsen = Vex

(3.19)

Cap tulo 3. Perles de movimiento en accionamientos incrementales

54

Adems de la velocidad mxima, es importante analizar otros parmetros a a a cinemticos, como por ejemplo la aceleracin. Esta magnitud est limitada por a o a las caracter sticas de la carga y del par elctrico mximo del motor. Su evolucin e a o temporal puede observarse en la Fig. 3.6.(a) donde a, b, c, d, y e representan a los perles exponencial, senoidal, curvas-S, triangular y parablico respectivamente. o La aceleracin mxima del perl exponencial es mayor que en el resto de los o a perles, mientras que la aceleracin mxima del perl triangular es la menor de o a todas. El resto de los perles posee aceleraciones mximas similares. a
Perfil de aceleracin 150 Aceleracion, [Pasos/s2] 100 50 0 50 100 150 200 2 4 6 8 10 12 14 16 18 a b c d e

Perfil del jerking a, d, e Jerking, [Pasos/s ] 5 bc 0 e a 5 d 2 4 6 8 10 Tiempo, [s] 12 14 16 18


3

a, e

a, d, e

Figura 3.6: Caracter stica de aceleracin y jerking. o

Lo expresado se puede resumir en (3.20) y se detalla cuantitativamente en la Tabla 3.3 donde se muestran las aceleraciones mximas para los diferentes a perles.

Cap tulo 3. Perles de movimiento en accionamientos incrementales

55

Tabla 3.3: Aceleraciones mximas a atrg = 4 k2 aexp = 10 k2 apar = 6 k2 asen = 2 k2 aSc = 6 k2 donde k2 =
d1 . T2

atrg < apar = aSc < asen aex

(3.20)

En la Fig. 3.6.(a) se muestra adems la performance de aceleracin que proa o ducen los perles sinusoidal y de curvas-S en cuanto a sus caracter sticas suaves. Este concepto esta contemplado en otra magnitud cinemtica importante que es a el jerking. El mismo se dene como la derivada de la aceleracin, j(t) = o
d a ; dt (t)

en la literatura anglosajona se la conoce con el nombre de jerk 1 . El jerking es cr tico para la minimizacin de las vibraciones en las mquinas y est directameno a a te ligado al estrs mecnico, desgaste y progresivo deterioro de los componentes e a mecnicos de las mismas. Estos pueden ocurrir cuando la cadencia de cambio de a la aceleracin del servo sistema es demasiado grande o discontinua (innita). La o dinmica del jerking puede verse en la Fig. 3.6.(b), donde las deltas representan a el impulso de cambio de aceleracin. o El perl 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 n del movimiento es principalmente cr tica, pues cuando comienza el movimiento del mvil partiendo del reposo, la o aceleracin debe ser mxima para poder iniciar el movimiento, es ah donde los o a
Una traduccin posible de jerk ser tirn o movimiento convulsivo. El trmino fue ino a o e troducido por primera vez dentro del contexto de control de movimientos por Hanitsch and Schmidt-Milkau (1988) para el control de ascensores de alta performance.
1

Cap tulo 3. Perles de movimiento en accionamientos incrementales

56

perles mencionados impactan ms en la performance, agregando un exigente a requerimiento. Las caracter sticas propias del jerk para cada perl, son independientes de los parmetros del mismo, lo que signica que la velocidad mxima, el per a a odo de los desplazamiento, etc, no cambian la existencia de los impulsos de aceleracin. Se o concluye que cuando se requieran la minimization o incluso la anulacin de estos o impulsos, los perles con curvas suaves son requeridos.

3.2.2.

Comparacin a igual amx o a

A continuacin se realizar un anlisis comparativo en el que, adems de o a a a igual desplazamiento para todos los perles, se impondr la condicin de igual a o aceleracin mxima. Esta restriccin es razonable ya que normalmente es deseable o a o realizar movimientos en el menor tiempo posible y, por ende, tratar de operar a la mxima aceleracin. a o Bajo estas condiciones, con a3 = 4000 pasos y d3 = 10000 pasos, se realizaron s2 simulaciones cuyos resultados se pueden observar en la Fig. 3.7. Como primera observacin, existe una diferencia importante en cuanto al tiemo po que demora cada uno de los perles, que se puede resumir en la siguiente conclusin. o Ttrg < Tpar = Tsen = TSc Tex (3.21)

donde Ttrg es el tiempo del desplazamiento del perl exponencial, Tsen es el del sinusoidal, Tpar es el del parablico, TSc es el de curvas-s y Tex es el del exponeno 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. Perles de movimiento en accionamientos incrementales

57

Perfil de velocidad, amx = 4000 pasos/s2, Dtotal = 10000 pasos 6000 d 5000 b c 4000 e

Velocidad, [pasos/s]

3000 a

2000

1000

0 0 1 2 3 4 Tiempo, [s] 5 6 7

Figura 3.7: Comparacin con aceleraciones constantes o

Por lo tanto, cuando se requiera un desplazamiento rpido, es indudable que el a perl ms conveniente es el trapezoidal y el peor el exponencial, siendo similares a los perles parablico, sinusoidal y de curva-S. A los efectos prcticos podr o a a considerarse que el parablico es el ms indicado de los tres ultimos ya que se o a aprecia que es el de menor velocidad mxima. Esto introduce la importancia de a analizar la velocidad mxima. La Fig. 3.7 permite apreciar que: a Vex < Vpar < Vsen VSc < Vtrg =

(3.22)

Se aprecia que el trapezoidal es el de mayor velocidad mxima mientras que el a exponencial es el menos exigente. Esto indica una superioridad a la hora de elegir

Cap tulo 3. Perles de movimiento en accionamientos incrementales

58

Tabla 3.4: Tiempos totales 2 k3 Ttrg = 2 k3 = 4,472 k3 Texp = 20 k3 = 2,449 k3 Tpar = 6 k3 = 2,506 k3 Tsen = k3 = 2 TSc = 6 k3 2,449 k3 = entre los mismos, cuando la aplicacin imponga restricciones de velocidad. o Los resultados anteriores se pueden vericar cuantitativamente a partir de las ecuaciones de la Tabla 3.1, obtenindose la Tabla 3.5. e Tabla 3.5: Velocidades mximas a = k4 Vtrg = k4 0,4472 k4 Vexp = 1 k4 =
5

Vpar = Vsen = VSc =

3 8 2 2 3

k4 k4 k4 d4 a4 .

0,612 k4 = 0,797 k4 = 0,816 k4 =

dnde k4 = o

3.2.3.

Comparacin a igual Vmx o a

Si se precisa mantener nuevamente un mismo desplazamiento en todos los perles con una velocidad mxima determinada, desendose conocer cual requiere a a el menor tiempo, se puede inferir de la Fig. 3.5 que, debido a la menor velocidad que el perl parablico requiere para completar un movimiento, este necesitar o a por ende un menor tiempo para completarlo a igual velocidad mxima. En la a (3.23) se resumen estos resultados anal ticos bajos las condiciones mencionadas. Tpar < Tex Tsen TSc Ttrg = = =

(3.23)

Cap tulo 3. Perles de movimiento en accionamientos incrementales

59

3.2.4.

Resumen de las comparaciones

A partir de las comparaciones realizadas, se concluye que el perl exponencial es el ms desventajoso en aplicaciones con restricciones de tiempo, aceleracin o a o velocidad, por lo tanto queda descartado para cualquier implementacin prctio a ca. Los dems perles poseen caracter a sticas que los hacen ventajosos sobre el resto, segn sea la aplicacin. Ejemplo de esto es la conveniencia del perl trapeu o zoidal cuando el movimiento se debe desarrollar lo ms rpidamente posible, el a a parablico es el ms apropiado cuando existen restricciones de velocidad mxima o a a y el sinusoidal o de curvas-S cuando se desea el menor jerking.

3.3.

Conclusiones

Se expusieron los desarrollos de los perles ms usados en la prctica expoa a niendo una denicin generalizada de los mismos de forma de particularizarlos o para la aplicacin. Luego, se procedi a una comparacin sistemtica que abarca o o o a todas las variables dinmicas como cinemticas de los perles de movimiento. En a a este sentido, se determin el perl ms adecuado en cuanto a: la menor velocidad o a mxima a desarrollar, la menor aceleracin mxima, o el m a o a nimo jerking cuando los parmetros como la distancia y el tiempo de movimiento estn impuestos. a a Se continu seguidamente con la denicin de comparaciones que permitan eno o contrar el perl que desarrolla la menor velocidad mxima o el menor tiempo a cuando se requiere un desplazamiento a desarrollar con una aceleracin mxima o a impuesta.

Cap tulo 3. Perles 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. IEEE Control Syst. Mag., 24(2):4760. Fredriksen, T. (1974). Design of digital control systems with step motors. In Kuo, B. C., editor, Theory and Applications of Step Motors - Symposium on Incremental Motion Control Systems and Devices, 1972-1973, volume 8, pages 290315, St. Paul, Illinois. West Publishing Co. Geiger, D. F. (1980). A simplied digital positioning system. In Kuo, B. C., editor, Ninth Annual Symposium Incremental Motion Control Systems and Devices, IMCSS80, volume 9, pages 281288, St. Paul, Illinois. West Publishing Co. Gibson, G. W. (1997). Instantaneous maximum kinetic energy of horizontally sliding passenger elevator door systems. Technical Report 1027, Elevator World. Greenspan, D. and Casulli, V. (1988). Numerical Analysis for Applied Mathematics, Science and Engineering. Addison-Wesley, Redwood City, California. Hanitsch, R. and Schmidt-Milkau, C. (1988). Contribution to state control for elevator systems with respect to parameter variation and nonlinearity. In Proceedings of the IEE 3rd International Conference on Power Electronics and Variable-Speed Drives, pages 319323, 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 elevator using time-based position pattern generation. In Proceedings of the 37th IAS Annual Meeting. Conference Record of the Industry Applications Conference, 2002, volume 1, pages 644649, Pittsburgh, PA. Kolasinski, E. M. (1995). Simulator sickness in virtual environments. Technical Report 1027, U.S. Army Research Institute. M.C.Tsai, I.F.Chiu, and M.Y.Cheng (2004). Design and implementation of command and friction feedforward control for CNC motion controllers. IEE Proceedings Control Theory and Applications, 151(1):1320.

Cap tulo 4 Temporizacin de los pulsos de o accionamiento


Un sistema de accionamiento para mquinas de movimiento incremental ina dustriales est formado por el controlador digital de movimientos, el driver de a potencia y el o los motores. El controlador digital de movimientos genera los perles de movimiento en funcin de parmetros tales como aceleracin mxima, carga, velocidad mxima, o a o a a distancia, tiempo, entre otros. Como se estableci en el Cap o tulo 1, es necesario tener perles de velocidad que establezcan una determinada dinmica de carga a a n de obtener movimientos sin prdidas de paso. El perl pueden estar pree establecido (o-line) o ser modicado en tiempo real (on-line) tanto por una entrada al sistema o por accin de un controlador de jerarqu superior, host. En o a los sistemas de control complejos, donde puede haber cientos de motores en l nea, es el host el que modica el perl para cada eje controlado, de forma de producir un movimiento determinado. Una vez establecido el tipo de perl de movimiento, el controlador de movimiento env los pulsos al driver del motor. A este tren de pulsos que determina a 61

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

62

la velocidad instantnea se lo conoce como pulsos de accionamiento o de velocia dad. El espaciamiento entre los pulsos determina la velocidad instantnea del eje, a a este espaciamiento se lo conoce como temporizacin. Con cada pulso enviado, o 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 controlador es esquematizado por el generador de perles 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, segn el modo de accionamiento, u paso, medio paso o micropaso. Estas, a travs de la etapa de potencia, producirn e a la ejecucin del paso en la mquinas. o a
Drivers de Potencia

Generador de perfil de Indexador movimiento Controlador Motor paso a paso

Figura 4.1: Esquema de un sistema de control de movimiento para mquinas de a movimiento incremental.

Un sistema digital debe calcular el tiempo entre paso y paso acorde al perl o o de velocidad requerido. En sistemas con P, un mdulo de temporizacin (timer ) es cargado con una palabra digital equivalente al tiempo que se desea establecer. Una vez que el temporizador ha culminado el tiempo prejado se produce un pulso de accionamiento y el P ya debe tener calculado el prximo tiempo que o es cargado en el timer. Una Fig. que ilustra el proceso de un bsico controlador a digital de accionamiento es el que se ve en la Fig. 4.2. Al tiempo de clculo, es decir a el tiempo que al procesador le toma calcular un nuevo tiempo, se lo denomina

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

63

tiempo de procesamiento, Tc . En general el Tc de un procesador es constante para un perl y parmetros determinados, pero es funcional a la tecnolog utilizada. a a

v(t) VS VS /2 VS /3 i(k) Dti


k i0 i1 i2 i3 i4 i5 i6 i7 i8 i9 i10

VS /4

k Tc2 Tc3 Tc4 Tc5 Tc6 Tc7 Tc8 Tc9 Tc10

Figura 4.2: Velocidad, pulsos ndice y localizacin temporal del clculo propiao a mente dicho para el i. El clculo, T ci , siempre se retrasa una iteracin y en este a o caso se lo asume constante para todo el perl de velocidad. A continuacin se realiza un anlisis de los principios de la temporizacin y o a o de las ecuaciones que gobiernan la generacin de los tiempos. o

4.1.

Sistemas de Temporizacin o

En los primeros controladores de movimientos para mquinas incrementales, a el perl de movimiento era un arreglo lgico o incluso un generador de rampa o analgico. Esta seal alimentaba luego a un indexador, que la transformaba en o n un tren de pulsos que eran enviados al driver. En los sistemas actuales, Oriental Motor U.S.A. Corp. (2005), Pacic Scientic (2005), el generador de perl y el indexador de pulsos forman una sola unidad. Con

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

64

nes didcticos, es util conservar una separacin entre la temporizacin del perl a o o de velocidad y los pulsos enviados al indexador. Esta separacin es la que permite o denir una teor para poder encontrar, en funcin a una funcin arbitraria, la a o o temporizacin de los pulsos que comandarn el movimiento de la mquina. o a a La teor que a continuacin se desarrolla es original a partir del trabajo de a o Kenjo and Sugawara (1995). Se establece una mtodo de temporizacin que es e o independiente de tipo de perl de velocidad a comandar y de la tecnolog de a implementacin. o Surge la necesidad de establecer el tiempo entre pulsos ndice, en funcin de o un perl de velocidad dado.

4.1.1.

Temporizacin o

La temporizacin de lo pulsos es inversamente proporcional a la velocidad, o ya que dado un instante cualquiera, en el i-simo paso incremental, la velocidad e est dada por: a 1 ti

vi (t) =

(4.1)

Dado que el comando de velocidad v(t) puede adoptar cualquier forma, y en particular, perles como fueron denidos en el Cap tulo 3, es necesario encontrar la temporizacin de los pulsos que son enviados al indexador. Mediante el modelo o del motor es posible calcular la temporizacin ptima de los pulsos de accionao o miento teniendo en cuenta la carga mecnica, como previamente se desarrollo en a el Cap tulo 2. Sin embargo, se desea desarrollar una teor que establezca la tema porizacin de los pulsos de accionamiento cualquiera sea el perl de velocidad, sin o tener en cuenta la dinmica propia del motor y de la carga, de manera simplicar a la generacin tanto on-line como o-line de los perles de velocidad. Al no tener o

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

65

en cuenta en los clculos la dinmica del propio accionamiento y de la carga, es a a necesario que el par requerido est por debajo de la curva de pull-in para que el e accionamiento incremental no pierda pasos. Requerimiento que es fcil de cumplir a ya que en el gran porcentaje de aplicaciones industriales, los accionamientos son seleccionados para una tarea espec ca, teniendo en cuenta para ello la curva del par en funcin de la velocidad con un apreciable margen de seguridad. Adems de o a esto, el accionamiento debe ser capaz de comenzar el movimiento a la velocidad m nima requerida.

4.2.

Un mtodo de temporizacin e o

Es necesario encontrar ecuaciones que, en funcin de un perl de velocidad o dado, establezcan la temporizacin de los pulsos y el espaciamiento de los miso mos. En la siguiente seccin se presenta una marco general para el desarrollo o de ecuaciones que permitan hallar estas magnitudes teniendo como objetivo, las siguientes caracter sticas: 1. Debe tenerse como incgnita principal el nmero de pasos, n. o u 2. Debe ser posible generar los perles de velocidad tanto de forma on-line como o-line. El requerimiento planteado en el punto 1 hace necesario que las soluciones a encontrar tengan una estructura algebraica. En los perles de velocidad planteados (ver cap tulo 3.1), todos los coecientes son racionales y enteros, pero debido a que la incognita es de orden distinto a uno, las ecuaciones resultantes sern, en a general, ecuaciones algebraicas irracionales. El punto 2 plantea que el marco de trabajo a desarrollar debe ser lo sucientemente amplio para poder producir perles de velocidad que puedan ser tanto

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

66

o-line como on-line. En la generacin o-line de los perles de velocidad, la o temporizacin es pre-computada e ingresada al controlador en forma de tabla o o medio de almacenamiento extra ble. En la generacin on-line el perl es compuo tado a medida que se genera por el mismo controlador. En este ultimo caso, el controlador hace las funciones tanto de generacin del perl como de indexacin o o de los pulsos, por lo que las ecuaciones deben tener baja complejidad numrica. e En primer lugar, se plantea el marco de trabajo y se desarrollan las ecuaciones de temporizacin para una rampa de velocidad (aceleracin constante). o o

4.2.1.

Aceleracin constante o

Sean los pulsos de velocidad1 , f (t), una funcin denida por tramos, continua o en el tiempo y montonamente creciente en el per o odo t > tm , tal que: fm , t tm f (t) = f + a t ,t > t m m

(4.2)

dnde a es la aceleracin y fm es la velocidad inicial de los pulsos. o o Si la aceleracin a es constante, la velocidad crece montonamente en el tramo o o t > Tm , obtenindose, el perl de velocidad como el que muestra la Fig. 4.3. En e la Fig. 4.3 tambin pueden verse los pulsos, cuya temporizacin est denida de e o a la siguiente forma: tm , t1 , t2 , t3 , t4 , t5 , . . .
1

(4.3)

La velocidad del motor ser proporcional a los pulsos de velocidad v(t) f (t) pero, en a general, no igual debido a las constantes geomtricas y constructivas propias del motor (nmero e u de polos, nmero de stacks, etc). Para independizarse de las mismas y tener un enfoque general, u la magnitud f (t) es preferida.

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

67

f(t) fm f5 f4 f3 f2 f1 fn i(t)
b A a B C D E c t d

Tm-1

Tm

t1

t2

t3

t4

t5

Tn Dtn

Figura 4.3: Rampa de velocidad con aceleracin constante y los pulsos velocidad o asociados.

Denido el esquema de temporizacin, puede establecerse el espacio de tiempo o que transcurre entre pulsos para cualquier tramo de la funcin, como: o

ti = ti ti1 Notar como, a medida que se incrementa la velocidad, el espaciamiento t disminuye, es decir tm < t1 , pues a la funcin f (t) se la deni como montoo o o namente creciente. Es importante notar que la velocidad es denida 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: 1 1 1 = = t1 t1 tm t1

f1 =
2

(4.4)

Otros autores toman la velocidad, como representativa, es decir la velocidad en un punto medio entre los dos instantes de tiempo. Esto produce ecuaciones anlogas pero diferentes, a a las producidas en este texto.

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

68

Anlogamente a lo denido en la ecuacin 4.1, puede establecerse el inverso a o de f (t). La misma es inversible, ya que f (t), como fue denida en (4.2), es una funcin continua a tramos. Luego: o 1 1 = f (t) fm + a t

t =

(4.5)

Por otra parte el rea del primer trapecio, A, debe ser exactamente de 1 paso, a por lo que:
t1

area A =
tm

(fm + at) dt (4.6)

a = (t1 tm ) fm + (t2 t2 ) = 1 paso m 2 1

En funcin a lo expresado en (4.6) es posible establecer una restriccin para o o la velocidad al culminar el primer pulso, donde: 1 1 = t1 t1

f1 =

dnde se ha realizado la simplicacin prctica t1 = t1 tm t1 . o o a Luego la velocidad inicial, para una aceleracin dada, queda establecida como: o 1 a t2 1a 2 1 = f1 t1 2 f1

fm =

(4.7)

Debe encontrarse una ecuacin que determine la temporizacin de los pulsos o o dada una velocidad inicial y una determinada aceleracin. Para ello, la ecuacin o o

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

69

4.6, puede ser reescrita en funcin al espaciamiento entre tiempos de manera que: o a 1 paso = t2 + t1 fm 2 1 a 2 t + t1 fm 1 = 0 2 1 t1 =
2 fm + 2a fm a

(4.8) (4.9) (4.10)

La ecuacin anterior determina el tiempo que debe transcurrir para mantener o la relacin de velocidad en el tiempo t1 . Puede usarse esta ecuacin iterativameno o te obtenindose un nuevo tk , usando el resultado en el paso inmediatamente e anterior. Sin embargo, el objetivo es encontrar una ecuacin algebraica. o Lo hecho para el primer trapecio, puede ser realizado con los consiguientes trapecios ABCDE . . ., etc, luego todo el segmento puede ser considerado un slo o trapecio, dnde el rea cubierta es de (n 1) pasos: o a a (n 1) pasos = area abcd = t2 + tn fm 2 n a t2 + fm tn = n 1 n 2 (4.11) (4.12)

Si nuevamente consideramos un eje de coordenadas tal que tm = 0, luego la ecuacin se convierte en: o a 2 t + fm tn n + 1 = 0 2 n Una solucin directa a la ecuacin cuadrtica, es: o o a
2 fm + 2a(n 1) fm a

(4.13)

tn =

(4.14)

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

70

Es posible entonces, mediante la ecuacin establecer la temporizacin en el o o n-simo pulso: e


2 fm + 2an fm a 2 2 fm + 2an fm + 2a(n 1) a a 2 fm + 2a(n 1) fm a

tn = tn+1 tn = =

(4.15)

La funcin pulsos de velocidad queda nalmente: o 1 = tn a


2 fm

fn =

+ 2an

2 fm + 2a(n 1)

(4.16)

22 20 18 16 14 f , [KHz] 12 10 8 6 4 2 0

0.2

0.4

0.6

0.8 1 Tiempo, [ms]

1.2

1.4

1.6

1.8

Figura 4.4: Rampa de velocidad. Notar que los instantes calculados estn marcaa dos con cruces, mientras que el trazo continuo es una interpolacin lineal de las o mismas.

Ejemplo 1. Se requiere un perl 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. Temporizacin de los pulsos de accionamiento o

71

Tabla 4.1: Rampa n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

de velocidad, resultados para n = 24 pasos tn [ms] tn [ms] fn [Hz] 0,000 0,250 4000,00 0,250 0,165 6073,28 0,415 0,132 7558,10 0,547 0,114 8788,56 0,661 0,101 9864,36 0,762 0,092 10832,80 0,854 0,085 11720,94 0,940 0,080 12546,06 1,019 0,075 13319,97 1,095 0,071 14051,19 1,166 0,068 14746,10 1,234 0,065 15409,65 1,298 0,062 16045,73 1,361 0,060 16657,50 1,421 0,058 17247,56 1,479 0,056 17818,07 1,535 0,054 18370,86 1,589 0,053 18907,47 1,642 0,051 19429,26 1,694 0,050 19937,39 1,744 0,049 20432,88 1,793 0,048 20916,63 1,841 0,047 21389,43 1,887 0,046 21852,01

aceleracin mxima de a = 107 pasos s2 . En la Fig. 4.4 se observa esta rampa de o a velocidad, la cual llega a una velocidad mxima de 21852,01 Hz. En la Tabla 4.1 a se puede apreciar la evolucin instantnea del perl y el espaciamiento de los o a pulsos. La rampa de velocidad, acotada en tiempo y velocidad, forma parte de un perl de velocidad comnmente usado, conocido como perl de velocidad trapeu zoidal. Una denicin ms adecuada de este tipo de perl fue introducida en la o a Seccin 3.1, reescrita aqu en la ecuacin (4.18), donde la velocidad mxima de los o o a pulsos de salida es fn , como puede verse en la Fig. 4.5. A la zona donde el perl

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

72

desarrolla la mxima velocidad, se la denomina plateau. En la Fig. 4.5 tambin a e pueden verse los pulsos, cuya temporizacin est denida de la siguiente forma: o a

tm , t1 , t2 , t3 , t4 , t5 , . . . tn

(4.17)

donde si t > tn el periodo entre los pulsos de salida es tn . f m , t < tm f (t) = fm + a t , tm < t < tn fn , t > tn

(4.18)

Si bien la ecuacin de temporizacin para una rampa lineal de velocidad es o o establecida por (4.14) y (4.15), no es posible utilizar las mismas para el perl de velocidad trapezoidal. Esto es debido a que en las ecuaciones halladas no hay una restriccin de velocidad que asegure que en el tn -pulso, la velocidad llegar a o a una fn , como lo plantea el perl dado por (4.18). Un ejemplo puede verse en la Fig. 4.6, donde la velocidad nal deseada es fn , pero el perl en rampa slo o 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 funcin del par puede no producirse y as provocar un o parada abrupta del accionamiento. Es por esto ultimo que es preferible encontrar un conjunto de ecuaciones que incluyan la velocidad nal. Para ello, introducimos en la funcin velocidad, una o restriccin tal que, en t = tn : o

fn = fm + a tn

(4.19)

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

73

f(t)
d b f5 f4 f3 f2 f1 fn a

fm

E c

i(t)

Tm-1

Tm

t1

t2

t3

t4

t5

t6

t7

t8

Tn Dtn

Figura 4.5: Rampa de velocidad con aceleracin constante y los pulsos de velocio dad asociados. La rampa de velocidad con velocidad nal constante, es parte del perl de velocidad trapezoidal.

Re-escribiendo (4.14) en funcin de esta restriccin, donde adems n = N , se o o a obtiene:


2 2 fn fm = 2a(n 1)

(4.20)

donde tambin, la velocidad inicial es: e


2 2 fm = fn 2a(n 1)

(4.21)

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

74

f(t)
fi+1 fn fi fi-1 fi-2 t

i(t)

Ti-2 Ti-1 Ti Tn Ti+1


Figura 4.6: fi y fi+1 son slo las dos frecuencias de generacin posible o o

Notar que esto plantea una restriccin tambin para la aceleracin, tal que: o e o
2 2 fn fm 2(n 1)

a=

(4.22)

De esta manera, la aceleracin tiene la forma de un polinomio de segundo o orden, como se aprecia en la ecuacin: o

2 2 2 2 0 = 4f1 f1 fn + a2 + 4f1 a (2n 3)

(4.23)

La solucin de esta ecuacin cuadrtica, permite encontrar la aceleracin para o o a o la rampa de velocidad en funcin a la velocidad nal y a la velocidad inicial, como o puede verse en (4.24):
2 a = 2 (3 2n) f1 +

4 2 2 2 4 8f1 + f1 fn 12nf1 + 4f1 n2

(4.24) (4.25)

(2N 3)2 +

2 2 2 (fn f1 )
2 fn 2 f1

1 + 2n 3

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

75

Si se desea encontrar ecuaciones que no tomen en cuenta la velocidad inicial, sino el nmero de pasos hasta alcanzar el plateau de velocidad, puede reescribirse u la (4.14) en funcin de (4.21). Operando de esta manera, se obtiene la temporio zacin de los pulsos: o 2(n 1)

tn =

fn 2 2a (N 1) +

fn 2 + 2a (n N )

(4.26)

Idem para los intervalos de tiempo entre pulsos:


2 fN + 2a (1 + n N ) a 2 2 fN + 2a (n N )

tn = tn+1 tn = =

= (4.27)

2 fN + 2a (1 + n N ) +

2 fN + 2a (n N )

Idem tambin con la funcin frecuencia e o ndice de los pulsos: 1 1 = tn 2

fn =

2 fN + 2a (1 + n N ) +

2 fN + 2a (n N )

(4.28)

Ecuaciones (4.26), (4.26) y (4.26) sintetizan lo expuesto hasta aqu para un perl rampa con limitacin de velocidad nal teniendo en cuenta slo el nmero o o u de pasos. Hasta aqu est denido la rampa de velocidad con aceleracin, es , a o necesario a continuacin denir la rampa de velocidad para una desaceleracin o o constante. Ejemplo 2. Con este conjunto de ecuaciones es posible realizar un ejemplo, donde fm = 4000 Hz, fn = 32000 Hz y la aceleracin mxima es a = 2,6937 pasos s2 . o a En la Fig. 4.7 se observa esta rampa de velocidad y en la Tabla 5.1 se puede apreciar la evolucin instantnea del perl y el espaciamiento de los pulsos obtenidos. o a El perl de velocidad llega a una velocidad mxima de 31573,43 Hz en 19 pasos, a ya que para el paso 20, la velocidad es de 32415,49 Hz, la cual supera el valor

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

76

prejado. Para el pasos mayores al 19, la velocidad debe ser 20 KHz por lo que el espaciamiento entre pulsos debe jarse en 31,25 s.

32

28

24

20 fn, [KHz]

16

12

0.2

0.4

0.6 0.8 Tiempo, [ms]

1.2

1.4

Figura 4.7: Simulacin. o

4.2.2.

Desaceleracin lineal o

Es posible utilizar el mismo conjunto de ecuaciones para producir un esquema de desaceleracin idntico al de aceleracin, simplemente invirtiendo el orden o e o del env de pulsos. No obstante, de esta manera no es posible producir el caso o t pico, en dnde la desaceleracin es ms rpida que la aceleracin. Es por este o o a a o motivo que es deseable encontrar una forma de computar el perl cuando el mismo desacelera.

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

77

Tabla 4.2: Rampa n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

de velocidad, resultados para n = 20 pasos tn [ms] tn [ms] fn [Hz] 0,250 0,250 4000,00 0,225 0,113 8883,26 0,259 0,086 11564,09 0,292 0,073 13711,07 0,321 0,064 15559,01 0,349 0,058 17207,35 0,374 0,053 18709,92 0,398 0,050 20099,85 0,421 0,047 21399,31 0,442 0,044 22624,01 0,462 0,042 23785,57 0,482 0,040 24892,87 0,501 0,039 25952,88 0,519 0,037 26971,20 0,537 0,036 27952,40 0,554 0,035 28900,26 0,570 0,034 29817,98 0,586 0,033 30708,26 0,602 0,032 31573,43 0,617 0,031 32415,49

Sean los pulsos de velocidad, f (t), una funcin denida por tramos, continua o en el tiempo y montonamente decreciente en el per o odo tm < t < tn , tal que: fm , t < tm f (t) = fm d t , tm < t < tn fn , t > tn

(4.29)

donde d es la aceleracin, constante en este caso y fm es la velocidad inicial de o los pulsos. Notar que se continu la notacin empleada hasta ahora, donde la o o velocidad nal es siempre fn < fm . No debe confundirse la fm de la rampa de aceleracin con el de la rampa de desaceleracin. o o Observando la Fig. 4.8, aplicamos la misma restriccin hecha para la rampa de o aceleracin, donde N es el nmero de pulsos necesarios para alcanzar la velocidad o u

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

78

f(t)
fm f1 f2 f3 f4 f5 f6 fn A a B C D E c d b

i(t)

Dt2
t

Tm-1Tm t1 t2

t3

t4

t5

t6

t7 Dtn

Tn

Figura 4.8: Rampa de velocidad con desaceleracin lineal. o

nal. Una solucin directa a la ecuacin cuadrtica, es: o o a fm


2 fm 2d(n 1) d

tn =

(4.30)

Notar que esta ultima ecuacin es similar a la (4.14) pero la solucin de esta o o cuadrtica corresponde a los negativos de la ra cuadrada. a z Operando anlogamente a lo hecho para la rampa con aceleracin, se llega a a o que la desaceleracin, en funcin de la velocidad inicial y nal, tiene siguiente o o

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

79

forma: d=
2 2 2 (fm fn ) 2 fm fn 2

(4.31)

(2N 1) +

1 + 2N 1

Idem para los intervalos de tiempo entre pulsos:


2 fm 2dn 2 fm 2d (n 1)

tn = tn+1 tn = =
2 fm 2nd +

= (4.32)

2
2 fm 2d (n 1)

Idem tambin con la funcin frecuencia e o ndice de los pulsos: 1 1 = tn 2

fn =

2 fm 2nd +

2 fm 2d (n 1)

(4.33)

Ejemplo 3. Se requiere un perl donde fm = 20000 Hz, fn = 4000 Hz requirindose 18 pasos para desarrollar el perl. e La desaceleracin mxima es entonces d = 9107941,715 pasos s2 , esta desaceo a leracin en particular, logra alcanzar la velocidad nal propuesta en exactamente o 1,6 ms. En la Fig. 4.9 se observa la evolucin de este perl, dado por (4.31), o (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.

Aceleracin no constante o

Lo expuesto hasta aqu ha sido realizado para aceleraciones constantes, po sitiva para el caso de una aceleracin y negativa para una desaceleracin. Un o o caso ms general an, es desarrollar ecuaciones que involucren aceleraciones con a u dinmica, es decir, a(t). La principal motivacin es poder comandar perles de a o velocidad como los expresados en el Cap tulo 3, los cuales tienen aceleracin no o

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

80

20

18

16

14

fn, [KHz]

12

10

0.2

0.4

0.6

0.8 1 Tiempo, [ms]

1.2

1.4

1.6

1.8

Figura 4.9: Simulacin de desaceleracin mxima. o o a

constante. De esta forma poder utilizar las caracter sticas especiales de los mismos, en cuanto a minimizacin de jerking, tiempo o distancia. De las conclusiones o obtenidas en el Cap tulo 3, se sigue que los perles relevantes para cumplir con estas caracter sticas son el el perl trapezoidal, el perl parablico, y el perl con o curvas-S. Temporizacin del perl parablico o o En la Seccin 3.1.3 del Cap o tulo 3.1, se encuentra la expresin de la velocidad o para un perl parablico, la que puede expresarse como: o t (T t) + fm T2

f(t) = 4fn

(4.34)

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

81

Tabla 4.3: Rampa n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

de velocidad, resultados para n = 21 pasos tn [ms] tn [ms] fn [Hz] 0,000 0,051 19533,55 0,051 0,052 19061,50 0,104 0,054 18577,46 0,157 0,055 18080,45 0,213 0,057 17569,38 0,270 0,059 17042,98 0,328 0,061 16499,77 0,389 0,063 15938,04 0,452 0,065 15355,74 0,517 0,068 14750,44 0,585 0,071 14119,17 0,655 0,074 13458,25 0,730 0,078 12763,07 0,808 0,083 12027,63 0,891 0,089 11244,00 0,980 0,096 10401,15 1,076 0,105 9483,09 1,182 0,118 8464,89 1,300 0,137 7303,36 1,437 0,169 5909,16 1,606 0,250 4000,00

dnde fm es la velocidad inicial de los pulsos, fn la velocidad mxima, T es la o a duracin completa del perl. o Este perl tiene la siguiente aceleracin: o 4 (T 2t) T2

a(t) = fn

(4.35)

cuya aceleracin mxima (en t = 0 y en t = T ) es: o a fn T

|A| = 4

De manera de poder determinar la temporizacin de los pulsos, se sigue la o misma estructura utilizada anteriormente para el perl trapezoidal. Por tanto el

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

82

rea cubierta por el perl parablico, en un tiempo tn=N = T , debe ser n 1, es a o decir: A 3 A 2 t t fm tn + n 1 = 0 3T n 2 n (4.36)

La solucin de esta ecuacin cbica, tambin conocida como la solucin de o o u e o Cardano (Cardano, 1545)(Cardano, 1968), especica tres ra ces, cuyo dominio, real o imaginario, depende de los coecientes presentados en (4.36). Para un comprensin geomtrica de la solucin de Cardano ver Nickalls (1993). Utilizando o e o la solucin y operando algebraicamente, se llega a la temporizacin de los pulsos o o que se muestra en (4.37):

1 tn = Re T 2 donde:

1 1 2 T + A T fm 4 1 + 2 3 +i 3 1 + 2

1 +

1 2 T 4
3

1 + A T fm 1 + 2 (4.37)

3 3 3 2 1 T Tn + T fm 1 = T 3 + 8 2A 2A 4A 9 2 9 3 3 4 3 4 9 2 T T n+ T + T n T fm 2 = 2 2 4A 8A 2A 8A 4A2 9 2 2 3 1 9 3 2 3 T nfm + T n T 4 fm 3 T 3 fm 2 2 2 4A 4A 16A A En (4.37), los polinomios 1 y 2 son efectivamente, funciones de n. Particu larmente, si A = 0 T = 0, la ra z 2 tiene slo solucin compleja. Es por o o este motivo que debe expresarse la temporizacin en forma compleja, pero deso tacndose que la solucin pertenece al dominio real. a o Para encontrar el tiempo entre pulsos, tn , se opera tal que:

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

83

tn = tn+1 tn = = 1 Re T 2 1 Re T 2
3

1 + 1 +

1 2 T 4
3

1 + A T fm +i 3 1 + 2

1 + 1 +

1 2 T 4
3

1 + A T fm 1 + 2

1 2 T 4
3

1 + A T fm +i 3 1 + 2

p2

1 2 T 4
3

1 + A T fm 1 + 2

(4.38) Ejemplo 4. Se desea desarrollar un perl parablico tal que T = 0,05 s, fm = o 400 pasos y A = 2800 pasos , se encuentra que la distancia que debe recorrer, es de s s2 113 pasos. En la Fig. 4.10 se observa la evolucin de este perl, dado por (4.37) o y (4.38). Temporizacin del perl de curvas-S o Los perles con curvas-S fueron denidos en la Seccin 3.1.3 del Cap o tulo 3.1, el conjunto de ecuaciones que denen la velocidad, puede observarse en (4.39). Vi + 4Vmx a V + i
3 2 t T2 4 3 t T3 T 2

v(t) =

,0 < t <

4Vmx a (T T3

(4.39)

t)2 (4t T )

,T <t<T 2

La aceleracin del perl: o

a(t) =

24Vmx t3 (T 2 t) a T 24V T 2 3 mx a
T 4 T t+2 t2 T3

,0 < t < ,
T 2

T 2

(4.40)

<t<T

cuya aceleracin mxima (en t = o a

3 y en t = 4 T ) es:

|amx | = 24Vmx a a

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

84

3.5

2.5

fn, [KHz]

1.5

0.5

10

15

20

25 Tiempo, [ms]

30

35

40

45

50

Figura 4.10: Simulacin o

No es posible encontrar ecuacin algebraica que comprenda todo el recorrido o del perl (de t = 0 hasta t = T ), ya que la velocidad est denida por tramos, a acorde al signo de la aceleracin. Por ello, la temporizacin del perl debe plano o tearse en dos partes, una donde la aceleracin es positiva y otra donde es negativa. o Con esta restriccin, el rea por recorrer en funcin del tiempo, est dada por: o a o a fm t 4 fn 3t + 4 fn 2t T T
4 fn (tT )3 +fm T 3 t T3
4 3

n1=

,t =

T 2

(4.41)

,t = T

Notar que cada tramo de la ecuacin 4.41 es esencialmente una ecuacin de o o cuarto orden, conocida en la bibliograf como curtica. La solucin de ecuaciones a a o curticas fue originalmente propuesta por Lodovico Ferraria (1522-1565), ver los a

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

85

trabajos de Nickalls (1993) y Christianson (1991). La solucin, en el tramo de o aceleracin es: o

T 1 tn = + 4 2 + 1 2

3 1 T2 2 (4fn T 3 + 4fn n T 3 fm fn T 4 ) 3 1 + 2 + + 3 3 4 fn 1 + 2 12 2fn 3 T2 2 (4fn T 3 + 4fn n T 3 fm fn T 4 ) 1 3 1 + 2 + 3 2 fn 3 1 + 2 12 2fn 2fm T 3 fn 1 4


T2 + 3 2(4fn 4 T 3 +4fn n T 3 fm fn T 4 ) f n 3 1 + 2 1 12 3 2fn

+ T3 +

1 +

(4.42) en donde:
2 2 2 1 = 432 fn T 5 + 432 fn n T 5 + 108fm fn T 6

2 = 4 48fn T 3 + 48fn n T 3 12fm fn T 4


2 2 + 108fm fn n T 6 + 432fn T 2 nT 3 T 3 2

Para encontrar el tiempo entre pulsos, tn , se opera tal que:

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

tn = tn+1 tn = 1 = 2 1 + 2 1 2 1 2 + 1 fn 1 fn 1 fn 1 fn 1 2 1 T fn 2 24 1 2 1 T fn 4 24 1 1 2 T fn 2 24 1 2 1 T fn 4 24
3

41 + 4 2 4T 3 nfn 41 + 4 2 + 4T 3 nfn 41 + 4 2 + 4T 3 fn 41 + 4 2 4T 3 fn

2 + T 4 fm fn 1 + 2 2 T 4 fm fn 1 + 2 3 3

2 + 1 + 2 2 1 + 2 3 2 1 + 2 2 + 1 + 2 3 3 3

2 4T 3 nfn 1 + 2 2 + 4T 3 nfn 1 + 2
3

2 + T 4 fm fn 1 + 2 2 T 4 fm fn 1 + 2
3

2T 3 fm + T 3 fn 1 fn 9216T 4 fm fn 3 2 36 864T 3 nfn 3 2 2304T 2 + 3 2 21


3

1 +

2 + 2 2

1 +

3 3 24fn 1 4 24fn 2 4 2304fn +

1 +

1 3 3 T 2 4T nfn 2 T 2 fm fn 2 + 4
3

+ 2 + 2 2

2T 3 fm + T 3 fn 1 fn 36 864T 3 fn 3 2 2304T 2 36 864T 3 nfn 3 2 + 9216T 4 fm fn 3 2 + 3 2 21


3

1 +

1 +

2 (4.43) 86

3 3 24fn 1 4 + 24fn 2 4 + 2304fn

1 +

1 3 3 3 T 2 4T nfn 2 4T fn 2 T 2 fm fn 2 + 4

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

87

En el tramo de desaceleracin, una traslacin a t T , simplica el proceso de o o 2 encontrar una solucin algebraica, por lo que: o 4fn t4 4fn t3 T3 T2

n 1 = fm t + fn t +

luego, la temporizacin de los pulsos, est dada por: o a

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

T 1 tn = + 4 2 1 + 2
T2 2

T2 4

2 2 (4fn n T 3 + fm fn T 4 + fn T 4 )

fn 3

1 +

2 +

2 1 +

1 3 12 2fn

1 +

2 + 2 + 1

2 2 (4fn n T 3 + fm fn T 4 + fn T 4 )

fn

1 +

2 + 2 1
T2 ( 4

1 3 12 2fn 1

1 +

2 + 2 + 1

+ T3 1

2(fm + fn ) fn

(4.44)
1 12 3 2fn
3

2 2(4fn n T 3 +fm fn T 4 +fn T 4 ))

fn

1 +

2 +2 1

1 +

2 + 2 1

88

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

89

en donde:
2 1 = 432 fn n T 5 108fn fm T 3 fn T 3 2

2 = 4 48fn n T 3 + 12fm fn T 4

Para encontrar el tiempo entre pulsos, tn , se resuelven primero, las funciones auxiliares 1 y 1 para luego obtener numricamente la (4.45). e

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

tn = tn+1 tn = 1 fn

1 fn

2T 3 fm + T 3 fn
1 fn
3

1 +

2 +2 1

2 T 2 4T nfn 2 T 2 fm fn 2 T 2 fn 2 +

+
1 4

1 24

41 + 4 2 + 2 1

1 fn

1 +

2 +2 1

2 T 2 4T fn 2 + 4T nfn 2 T 2 fm fn 2 T 2 fn 2 +

2T 3 fm T 3 fn 3

1 4

1 24

41 + 4 2 + 2 1 3 2 2 + 3 2 2 + 2 1 2 1

1 2 1 2 1 2 1 2

1 1 fn 2 1 1 fn 4 1 1 fn 2 1 1 fn 4

T2
3

+ 2 + 2 1

1 + T2

1 24 1 24 1 24 1 24

2 41 + 4 2 + 2 + (4T 3 nfn T 4 fm fn T 4 fn ) 1

1 +

2 2 + 2 1 +

1 + T2

2 +

2 1

2 41 + 4 2 + 2 + (4T 3 nfn T 4 fm fn T 4 fn ) 1

1 +

+ 2 + 2 1

1 + T2

2 41 + 4 2 + 2 + (4T 3 fn + 4T 3 nfn T 4 fm fn T 4 fn ) 1

3
3

1 + 3

+ (4.45)

1 +

2 +

2 1

2 41 + 4 2 + 2 + (4T 3 fn + 4T 3 nfn T 4 fm fn T 4 fn ) 1

2 2 + 2 1

1 +

90

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

91

Ejemplo 5. Si se desea desarrollar un perl con curvas-S tal que T = 0,05 s, fm = 400 pasos s1 , fm = 2800 pasos y A = 1600 pasos , se encuentra que la distancia s s2 que debe recorrer, es de 90 pasos en total, 45 pasos para la aceleracin y lo mismo o para la desaceleracin. En la Fig. 4.11 se observa esta simulacin. o o
3.5

2.5

2 fn, [KHz] 1.5 1 0.5 0 0

10 Tiempo, [ms]

15

20

25

Figura 4.11: Simulacin de un perl con curvas-S o

4.3.

Conclusiones

En este cap tulo se ha encontrado un marco de trabajo para la temporizacin o de la generacin de perles de velocidad para mquinas de posicionamiento ino a cremental. El mismo es sucientemente general como para abarcar los distintos tipos de perles, denidos previamente.

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

92

El perl sinusoidal no es incluido, ya que la denicin de este perl de velocio dad, contiene una funcin trascendental, de manera que el mtodo utilizado hasta o e ahora no puede ser empleado. La unica solucin es la numrica. No obstante, este o e perl no tiene ninguna ventaja sobre el perl con curva-S, por lo que se pierde el inters en encontrar una ecuacin algebraica que dena la temporizacin. e o o

Cap tulo 4. Temporizacin de los pulsos de accionamiento o

93

Referencias
Cardano, G. (1545). Artis Magnae sive de Regulis Algebraicis. Petrieus, Nuremburg. (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 Gazette, 75:327328. Kenjo, T. and Sugawara, A. (1995). Stepping Motors and their Microprocessor Controls. Monographs in Electrical and Electronic Engineering. Oxford University Press, Oxford, U.K., 2nd reprint edition. Nickalls, R. W. D. (1993). A new approach to solving the cubic: Cardans solution revealed. The Mathematical Gazette, 77:354359. Oriental Motor U.S.A. Corp. (2005). VEXTA Step Motor Drives, 2005-2006 General Catalog. Torrance, CA. Pacic Scientic (2005). Pacic Scientics P7000 Series Step Motor Drives. Danaher Motion, Radford, VA.

Cap tulo 5 Tcnica de Temporizacin e o Propuesta


5.1. Anlisis de la temporizacin con a o algoritmos convencionales
En el cap tulo anterior se desarroll un marco generalizado para encontrar o ecuaciones algebraicas que permitan determinar la temporizacin de los pero les de velocidad. Las ecuaciones de la temporizacin de un perl trapezoidal se o reescriben aqu en (5.1) y (5.2): 2(n 1)

tn =

fn 2a (N 1) +

fn 2 + 2a (n N )

(5.1)

tn = tn+1 tn = =

2 fN + 2a (1 + n N ) a 2

2 fN + 2a (n N )

= (5.2)

2 fN + 2a (1 + n N ) +

2 fN + 2a (n N )

94

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

95

Tabla 5.1: Resultados comparativos M A ra inversa z Cantidad de operaciones: 3 6 2 1 35 Tiempo de ejecucin en ciclos 35 12 50 o para precisin simple: o Tiempo de ejecucin en ciclos 51 25 163 115 o para precisin extendida: o De modo de cuanticar la complejidad de la tcnica, se computa el nmero de e u operaciones que requiere un DSP1 para calcular la (5.1). El nmero de operaciones u en coma otante (forma de la mantisa y del exponente), tanto para precisin o simple (8-bits reservados para el exponente y 24-bits para la mantisa) como para precisin extendida (8-bits para el exponente y 32-bits para la mantisa)(Texas o Instruments, 1997) puede ser resumido en la Tabla 5.1. Para cada paso dado por el motor, se computan todas las operaciones descritas por la Tabla 5.1. Los ciclos que al procesador le toma realizar cada operacin o es fuertemente dependiente del mismo; mientras que hay procesadores que poseen mdulos de multiplicacin separados del bloque aritmtico (ALU), existen o o e otros que poseen un mdulo2 para multiplicar y adicionar en una slo ciclo de o o reloj, existen DSPs con mltiples MACs. Sin embargo, para realizar funciones u matemticas trascendentales o racionales, se utiliza interpolacin en memoria. a o Este es el caso para el procesamiento de la ra cuadrada y de la funcin inversa z o (Lovrich, 1997). El tiempo de instruccin del procesador de coma otante de 32o 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).
El Procesador Digital de Seales (DSP) elegido es el TMS320C31 de Texas Instruments. En n el Apndice B se explican los detalles de su eleccin, as como un resumen de su arquitectura e o interna. 2 Una unidad MAC (Multiplier Accumulator Component) provee multiplicacin, multiplicao cin con adicin acumulativa y multiplicacin con substraccin acumulativa. o o o o
1

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

96

Tabla 5.2: Performance del DSP de coma otante TMS320C30-50 (5V) 40 ns tiempo del ciclo de instruccin o 275 MOPS, 50 MFLOPS, 25 MIPS operaciones enteras de 16-/ 32-Bit y coma otante de 32-/ 40-Bit 32-Bit de longitud de la palabra de instruccin con o direccionamiento de memoria de 24-Bit Dos timers de 32-Bit Al nmero de operaciones obtenidas en la Tabla 5.1 deben sumarse otros u tiempos. Uno de ellos es el tiempo que toma la conversin del tiempo obtenido o en (5.2) en ciclos de procesador. Un timer es cargado con este nmero de ciclos. u Cuando el mdulo del contador del timer completa un ciclo, se comanda un paso o del motor, obtenindose as los pulsos de salida. e Para un instante i dado, se dene al tiempo que tarda el procesador en calcular (5.2) ms el tiempo de conversin, como tiempo de procesamiento, Tc . Este tiempo a o impone un l mite prctico a la velocidad mxima a la que pueden enviarse los a a pulsos de salida. Por otra parte, no solamente el Tc limita la mxima velocidad, a sino que tambin esta involucrada la resolucin del contador de tiempo del DSP, e o Tr , como se expresa en 5.3: Vmx = a 1 Tr + Tc (5.3)

Las resoluciones de los contadores de tiempo de los procesadores actuales son bastante pequeas, por los que se puede descartar el trmino Tr en (5.3). Por lo n e tanto, (5.3) se puede aproximar a (5.4): 1 Tc

Vmx = a

(5.4)

Ejemplo 6. Se busca determinar el tiempo de procesamiento involucrado en el

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

97

accionamiento con paso completo por pulso, mediante un perl trapezoidal ejecutado a travs de un DSP. Las caracter e sticas del perl trapezoidal deseado son: Vmn = 500 pasos s1 , Vmx = 10000 pasos s1 y aceleracin a = 10000 pasos s2 . o a El tiempo necesario para la ejecucin de (5.2) result en un Tc = 12,48 s, si o o 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 tom computar la prxima o o temporizacin, transformar el resultado a ciclos de reloj y cargar el timer. o Incluso la temporizacin del ms simple de los perles de velocidad, el perl o a 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 clculo, a el Tc . Para superar la limitacin de la Vmx alcanzable, la meta es proveer de un nueo a vo algoritmo, un procedimiento ms ecaz de la generacin del paso, sin utilizar a o contadores de tiempo.

5.2.

Nueva tcnica de temporizacin e o

Por lo encontrado en el ejemplo anterior es claro que el desarrollo de la temporizacin mediante clculo algebraico posee dos desventajas importantes: o a esta solucin demanda una extensa cantidad de timers en el caso del accioo namiento de mltiples motores, u la complejidad de las ecuaciones limita la mxima velocidad, esto se hace a ms evidente cuanto el nmero de motores a controlar es elevado y/o el a u accionamiento es del tipo micro-paso.

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

98

Se hace necesario encontrar una forma ms eciente de temporizacin. La a o metodolog estndar es directa, en el sentido que se encuentra el valor exacto a a de la temporizacin es calculado a priori algebraicamente. Seria concebible un o mtodo indirecto donde el valor de la temporizacin no se arribe mediante una e o operacin algebraica, sino mediante la evaluacin iterativa de un funcin lineal3 . o o o Dada esta funcin lineal, o primitiva, seria posible arribar al valor exacto de la o temporizacin, a travs del mtodo de aproximaciones sucesivas. o e e Una denicin ms precisa dir que un mtodo iterativo produce una solucin o a a e o aproximada luego de un nmero nito de pasos. Sin embargo, que esta solucin u o sea una aproximacin, no es un problema. La misma ser tan buena como el o a nmero de pasos que se desee, o pueda, iterar. u Dentro de los mtodos iterativos, el mtodo de Newton-Raphson es quizs el e e a ms conocido. Originado por Isaac Newton en De analysi per aequationes numero a terminorum innitas (escrito en 1669, y publicado en 1711 por William Jones) es ampliamente usado para encontrar las ra de una funcin. El mtodo, desaces o e rrollado originalmente para ecuaciones polinmicas, fue modicado en 1690, por o Joseph Raphson quien public una descripcin simplicada. Raphson fue el prio o mero en describir el mtodo en trminos de aproximaciones sucesivas, (Gerald e e and Wheatley, 2004). Otros mtodos ms elaborados son usados en la resolucin e a o de ecuaciones lineales simultaneas, ver (Barrett et al., 1993). En lo que concierne la problemtica de la resolucin de la temporizacin, a o o los mtodos de aproximaciones sucesivas no eran usados. Es posible pensar en e aplicar el mtodo de Newton-Raphson directamente sobre (5.2). Los pasos para e ello ser despejar el n igualando a cero la funcin, iterar la funcin trascendental an: o o hasta que llegue a cero o a una proximidad denida por el error deseado.
3

Esta distincin, es realizada en el trabajo de Saad (2003). o

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

99

Si bien esta tcnica tiene la ventaja de no utilizar timers, la ecuacin resultante e o a iterar es todav muy compleja para un DSP de uso industrial actual. a Es posible usar una funcin auxiliar o primitiva, como arriba se introdujo, para o obtener la temporizacin. La idea es encontrar una funcin tal que al iterarla por o o sucesivas aproximaciones d el resultado esperado. De esta forma el algoritmo es e ms eciente desde el punto de vista computacional. El algoritmo propuesto se a 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 iteracin: o 1. Se inicializa con nk = 1. 2. Se asume que t(k) = nk Tc donde nk es un nmero entero y positivo. u 3. Se verica is el t(k) asumido, permite encontrar el V(k) deseado. Para ello se computa Vr(k) = 1 t(k) (5.6) (5.5)

donde Vr(k) es la velocidad de referencia en el k-simo paso. e 4. Si la vericacin es verdadera, se ejecuta el paso/micro-paso. Si no, se ino crementa nk y se repite el proceso. (puntos 2, 3 y 4)

nk = nk + 1

(5.7)

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

100

Ejecucion del k-simo paso

D t(k)=nk Tc

Dt(k)
si D un paso...

no

Figura 5.1: Diagrama de ujo del algoritmo. Se asume que el bloque de los perles de velocidad fue ejecutado previamente.

De (5.5) puede observarse que la resolucin del t(k) es Tc . No es posible o cumplir la igualdad planteada en (5.6) debido a esta resolucin. La igualdad o planteada en (5.6) se transforma en una inequidad, expresada en la comparacin o 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 iteracin. Para ello, una simple contraccin como o o

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

101

se muestra en (5.9) es preferible.

Vr(k) t(k)

(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 signicado que el expresado en la (5.4), pero con una magnitud considerablemente menor, puesto que los cmputos son ms directos. Experio a 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 bsicamente en una suma acumulativa a peridica hasta que se alcanza la velocidad prevista. La Fig. 5.1 muestra un o diagrama de ujo de un sistema que, mediante (5.5), (5.7) y (5.9), ejecuta cada nuevo paso. El bloque de los perles de la velocidad fue ejecutado previamente. De (5.5), se desprende que la resolucin del nuevo algoritmo es Tc puesto que o el nk es un nmero entero. La resolucin nita en el t(k) hace que el nuevo u o algoritmo presente un problema de cuantizacin de la velocidad ya que la misma o es la inversa del t(k) , (5.6). Puesto que el trmino t(k) es un mltiplo de Tc y e u nk 1, resulta de que la velocidad comandada tiene la siguiente caracter stica: V max ; Vmax ; 1 1 2 = = = tk nk Tc . . . Vmax ; K nk = 1 nk = 2 . . . nk = K (5.10)

Vk (n)

Como ejemplo, la Fig. 5.2 muestra un perl trapezoidal que comienza con Vmin y llega hasta una Vmax . Para no perder de vista el perl 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. Tcnica de Temporizacin Propuesta e o

102

v(t)
Vmx nmx = 1

Vmx 2 Vmx 4 Vmx 5 Vmx 6 Vmx 7 Vmx 3 n =4 mx nmx=5 nmx=6 nmx=7 t0 t1 t2 t3 nmx = 3

nmx = 2

Tc t4 t5

i(k)

k
Figura 5.2: Perl de velocidad deseado, perl cuantizado y pulsos ndice.

ms cercana a la velocidad inicial prevista, de Vmin . En el t1 , nk cambia a 6. Por a consiguiente una velocidad ms alta de Vmax /6 ocurre. En t2 , el nk = 5 produce a 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 perl. El efecto de cuanticacin es ms marcado a medida que la velocidad mxima o a a 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 contadores de tiempo, ni las tablas de look-up (LUTs). Puede, efectivamente, trabajar a

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

103

velocidades mucho ms altas. Posee un efecto de cuanticacin de perl de veloa o cidad que depende de la magnitud del Tc . Con la actual tecnolog de DSPs, un a Tc = 6 s es obtenible, como se arribar en el Cap a tulo 6.

5.3.

Impacto de los perles en la Implementacin o

Lo hecho hasta aqu es la temporizacin en si misma, es decir en funcin de o o una velocidad impuesta externamente, los tiempos entre paso y paso son encontrados. En la Fig. 5.2, la nueva tcnica fue explicada con una rampa de velocidad e (aceleracin constante). No obstante, se deben introducir en el algoritmo los pero les de velocidad, como por ejemplo, los descriptos previamente en el Cap tulo 3. Sin embargo, esas ecuaciones deben transformarse para ser empleadas en el algoritmo. As como tambin debe evaluarse el grado de complejidad que las mismas e introducen en el tiempo de procesamiento cuando son implementadas en DSP.

5.4.

Implementacin en DSP o

La implementacin de los perles de velocidad puede ser del tipo o-line u ono line. Los esquemas o-line, dnde el perl es calculado por anticipado en LUTs, o se fundamentan en la lectura rpida por parte de un procesador de las tablas a que contienen las consignas de tiempo y/o posicin y/o velocidad. Dado que el o procesador no debe realizar clculos, los perles o-line se caracterizan por ser a rpidos, desde el punto de vista de la generacin inteligente del perl, permitiendo a o velocidades mximas elevadas. Por otro lado poseen una desventaja importante: a requieren un gran espacio de memoria que es proporcional a la extensin y preo cisin de los desplazamientos. o

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

104

Respecto a los perles on-line, se mencionan: Aquellos en los que la referencia de velocidad es generada a partir de ecuaciones cuyo resultado es el tiempo entre pasos. Este tiempo es ingresado a timers, los que a su vez, entregan los pulsos de excitacin al motor. o Perles basados en la ejecucin iterativa de ecuaciones de diferencias, eno tregando en forma directa los pulsos de excitacin al motor. o Respecto a los primeros, el desarrollo de las ecuaciones para temporizar los pasos en un perl trapezoidal es complejo a pesar de ser un perl simple (Kenjo and Sugawara, 1995). La complejidad aumenta con el orden de las ecuaciones por lo que para un perl ms complicado deben generarse ecuaciones con gran a nmero de trminos y con funciones no trascendentes como exponenciales, ra u e ces cuadradas, etc. Lo mencionado impone una limitacin en cuanto a la velocidad o mxima que pueden alcanzar los movimientos. a En cuanto a los segundos, poseen la ventaja de que al resolver el perl 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 obtenindose mayores velocidades. e Por tanto, una forma general, para su implementacin es necesaria. o

5.4.1.

Formulacin general para los perles de velocidad o

En un planteo general, la velocidad puede denirse por la ecuacin en difeo rencias que se aprecia en (5.11).

v(k) = v(k1) + a(k) e

(5.11)

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

105

Donde v(k) es la velocidad actual, v(k1) la velocidad en la anterior iteracin, o a(k) es la aceleracin actual y e es el tiempo entre iteraciones. En la (5.11) la o aceleracin es variable lo que permite describir cualquiera de los perles de veo locidad a travs de una conveniente expresin de a(k) . Se puede expresar a(k) de e o una manera general, vlida para cualquier perl de velocidad, que incluso, puede a adoptar una forma que permita describir la evolucin creciente del movimiento y o otra para la evolucin decreciente. En (5.12) y (5.13) se dispone el caso general. o

a(k)crec = a(k1) + C1 + C2 k a(k)decrec = a(k1) + C3 + C4 k

(5.12) (5.13)

A continuacin se evaluar comparativamente el impacto de cada perl soo a bre su implementacin en DSP. La idea de las comparaciones es determinar la o conveniencia de uno u otro estrictamente desde el punto de vista de la implementacin. Para ello se analizarn bsicamente los perles triangular, parablico y o a a o de curvas-S. El exponencial no se tendr en cuenta debido a su baja performance a respecto del resto. Por otra parte, el senoidal tampoco se analizar ya que, si bien a presenta un muy buen desempeo frente al jerking, lo mismo se logra con el perl n de curvas-S, que es sustancialmente ms sencillo de implementar. a

5.4.2.

Resultados comparativos

Se observa en la Tabla 5.3 un resumen de las constantes necesarias para construir estos perles de referencia, las cuales se desarrollaron a partir de (3.1) y (3.4) para el perl trapezoidal, de (3.9) y (3.11) para el parablico y nalmente o (3.15) y (3.17) para las curvas-S. Con las constantes mostradas en la Tabla 5.3 se construyeron los perles de referencias y se evaluaron tanto las implementaciones como la performance

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

106

Perl Trapezoidal Parablico o Curvas-S

Tabla 5.3: Resultados comparativos C1 C2 C3 C4 0 0 0 0 Ae 2 T 0 0 2 Ae T 8 Ae + 16 Ae e 32 Ae e 32 Ae e 16 Ae e 8 Ae 2 2 2 T T T T T2 T

de los mismos. Los detalles de la implementacin y los resultados experimentales o obtenidos con las mismas se muestran en el Cap tulo 6. A continuacin se exponen o las conclusiones obtenidas.

5.4.3.

Conclusiones

Si bien, el nmero de MACs adicionales en el ncleo del algoritmo result en u u o slo 8 MACs para el parablico y 10 MACs para el de curva-S debe considerarse o o otro importante conjunto de instrucciones convencionales que debi agregarse. o Debido a esto, se obtuvieron los resultados mostrados en la Tabla 5.4 en cuanto al tiempo de ciclo. Tabla 5.4: Resultados comparativos Perl e Trapezoidal 6,3 s Parablico o 8,7 s Curvas-S 9,2 s Las magnitud del Tc para el perl trapezoidal que muestra la Tabla 5.4, produce un nivel de la cuanticacin de 2000 pasos alrededor de velocidades del orden o de 15000 pasos que demuestra la importancia del problema. En aplicaciones de als ta precisin, este problema es parcialmente resuelto, ya que es necesario utilizar o motores paso a paso con pasos pequeos. Los saltos de velocidad tiene menor n impacto en motores de paso pequeo en comparacin con los de mayor paso. El n o tamao de los pasos es impuesto por la resolucin requerida. Lograr motores con n o

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

107

pasos extremadamente pequeos complica la fabricacin y el diseo de los mismos n o n y hace extremadamente costoso la produccin de estos. o Una alternativa es utilizar la tcnica de micropasos (microstepping) introdue cida previamente en la Seccin 1.1.4 del Cap o tulo 1, donde el tamao de paso del n motor se reduce aun ms por medio del control. a Mientras que los micropasos (microsteps) producen pequeos desplazamienn tos, una gran cantidad de pulsos deben ser enviados para conseguir el desplazamiento 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 velocidad transmisin de pulsos de velocidad entre el indexador y el driver. o

5.5.

Implementacin en FPGA o

Para reducir an ms el tiempo de procesamiento, se propone una implemenu a tacin hardware del algoritmo propuesto. El algoritmo previamente presentado o en la Seccin 5.2 es bastante simple para ser ejecutado por un hardware diseado o n con elementos lgicos. Este es el caso de los arreglos lgicos programables (ALPs o o o de sus siglas en ingls FPGAs) que contiene elementos lgicos (tanto de lgie o o ca combinacional como de secuencial) y cuyas redes de interconexin permiten o modicarse segn el diseo requerido. Esta capacidad de reprogramacin del diu n o seo, constituye de por si, un hardware de diseo exible, (Xilinx, 1999a), (Hayes, n n 1996), (Van den Bout, 1999). El desarrollo del algoritmo en hardware permite realizar mltiples tareas en u forma paralela, lo que permite que el tiempo de clculo sea menor. La paralelia zacin permite que las operaciones tales como la generacin, la multiplicacin y o o o la indexacin del perl de referencia puedan ejecutarse en bloques separados y o puedan funcionar independientemente unos de otros.

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

108

5.5.1.

Implementacin hardware del algoritmo o

Los arreglos lgicos programables tienen gran cantidad de lgica disponible o o para su interconexin. Aunque es posible el manejo de magnitudes decimales o o incluso de punto otante, es ms eciente el uso magnitudes enteras. Esta a eciencia se logra tanto a nivel de consumo de recursos lgicos (Thornton et al., o 1999), de velocidad y de potencia, (Todorovich et al., 2001). El algoritmo a usar se reduce de la contraccin de la ecuacin (5.9), que a o o continuacin se repite: o

Vr(k) t(k)

(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 clculo de (5.14) a se lleve a cabo a travs de magnitudes enteras. Para ello es necesario considerar e que la magnitud t(k) es nk Tc , como se planteo anteriormente en (5.5), por lo que slo Tc es decimal, ya que el n es un valor entero. En la implementacin o o hardware del algoritmo, el Tc es una magnitud funcin de la temporizacin de la o o FPGA. De manera de realizar toda la operatoria con enteros, se debe transformar la desigualdad planteada en (5.14) en la siguiente Ecuacin 5.15: o 1 Tclk

VR nk

(5.15)

En (5.15) el Tc ser el per a odo del reloj (clock ) sincrnico del sistema o un o mltiplo entero del mismo, cuyo periodo ser Tclk . Lo hecho hasta aqu no implica u a ningn cambio signicativo en el algoritmo, pero la multiplicacin decimal se u o reduce a enteros. La puesta en prctica de hardware de (5.15) se presenta en la a Fig. 5.3, donde se muestra el diagrama en bloques del controlador. El contador

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

109

cuenta per odos de reloj de Tclk , lo que representa la ejecucin de (5.5). o La implementacin hardware de (5.15) es llevada a cabo por los bloques mulo tiplicador y comparador. Cuando se satisface la igualdad, se ordena un nuevo paso. La seal entonces alimenta la interfaz del driver, que comanda los pulsos al n driver de cada fase del motor. La Fig. 5.3 muestra un motor de 4 fases. El per odo de reloj, Tclk , en la implementacin hardware, es equivalente al o tiempo de clculo en la ejecucin del algoritmo mediante software en el DSP a o (Seccin 5.4). El per o odo de reloj Tclk dene la resolucin del tiempo del controo lador. Como el Tclk se puede reducir mediante el uso de hardware, el efecto del cuantizacin sobre la velocidad mecnica ser insignicante. o a a

5.5.2.

Reduccin del rea de la implementacin o a o

Como se ve en la Fig. 5.3, es necesario el uso de un multiplicador. Una solucin directa para la implementacin hardware del multiplicador es una estructura o o combinatoria (conocido en la bibliograf como multiplicador paralelo). Esta soa lucin presenta el m o nimo retardo impuesto por el arreglo de compuertas lgicas. o Si bien con esta solucin la ejecucin del algoritmo se realiza a la mximo velocio o a dad, este retardo es variable y depende del producto de los operandos. En el caso del algoritmo a resolver, este tiempo se podr jar mediante una sincronizacin a o a partir de la registration de los eventos y consecuentemente el Tc = Tclk . Sin embargo, esta solucin implica una gran cantidad de elementos lgicos, o o que aumentan proporcionalmente a la longitud de palabra de los operandos. Un ejemplo de esto, ser un producto de 16 16 bits, el cual requiere el 90 % de a las compuertas lgicas de una FPGA de 10000 elementos Xilinx (1999a), Xilinx o (1999b).

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

110

Clock Tclk

Generador del perfil de velocidad

Contador 16

nk

16

VR

Multiplicador 1/TC
32 32 Comparador VR nk 1/T
C

VR nk
Drivers de Potencia

Interfaz del driver


Motor/es paso a paso

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 lgicos. El multiplicador secuencial del tipo o suma y desplazamiento es analizado en Hennessy and Patterson (1996). Una clasicacin y descripcin de los diversos multiplicadores puede tambin encontrarse o o e en el trabajo de Boemo et al. (1993). Este tipo de multiplicador permite una reduccin ecaz del rea de alrededor o a de 10 veces, pero en detrimento del tiempo de clculo. En este caso se requiere a 16 ciclos de reloj para la ejecucin de un productos de 16-bits. Sin embargo, con o un reloj funcionando a 40 MHz, el Tclk es tan slo 400 ns. En la implementacin o o de este sistema se utiliz una variante del multiplicador secuencial de suma y o desplazamiento. Esto permite la implementacin prctica del algoritmo incluso o a en FPGAs de aplicacin general de 6000 compuertas lgicas. o o

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

111

En la Fig. 5.3 se observa un bloque generador del perl de velocidad. En este caso, un perl trapezoidal es generado, con varios parmetros, tales como a aceleracin, m o nima y mxima velocidad y cantidad del pasos. El controlador a decide cmo el perl se debe basa en estos parmetros, y genera un perl de o a referencia para manejar el motor paso a paso.

5.6.

Conclusiones

En este cap tulo se propuso una nueva tcnica de temporizacin y se implee o ment la misma en forma real en un controlador industrial diseado y construido o n para el accionamiento de mltiples motores paso a paso. u Del anlisis del tiempo de procesamiento de los algoritmos convencionales, a para el desarrollo del ms comn de los perles de velocidad, se concluye que los a u mismos no pueden alcanzar altas velocidades. Mucho menos en el comando de mltiples motores, ya que si se desea el accionamiento simultaneo de M motores u se requieren M timers y el tiempo de ejecucin se alarga proporcionalmente, o es decir, la actualizacin de los pulsos no puede producirse antes de M Tc , o 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 simultneo de 12 accionamientos. Se encuentra que la mxima velocidad puede a a ser slo de 6677 pasos s1 . Es por esta razn, que el perl, como se plantea en el o o ejemplo, no puede lograrse. La tcnica propuesta resuelve el perl de referencia en forma iterativa. Se e consigue de esta manera, no utilizar hardware adicional, como son los timers, eliminndose el l a mite de velocidad que imponen los mismos, obtenindose mae yores velocidades. Se desarrolla una tcnica complementaria para el desarrollo de e

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

112

perles de velocidad de aceleracin no-contante. De la comparacin de la impleo o mentacin de los mismos en DSP, se concluye que el nmero de MACs en el ncleo o u u del algoritmo result en slo 8 MACs para el perl parablico y 10 MACs para o o o el de curva-S. Esto hace al sistema muy conveniente cuando se necesita la combinacin de alta velocidad y perles de velocidad suaves. Mediante el algoritmo o propuesto es posible, incluso, el accionamiento de mltiples motores. u Se logr reformular el algoritmo propuesto de forma de transformar las operao ciones decimales en enteras. De esta forma, se logr implementar este algoritmo o en FPGA. Esto permite una disminucin substancial del tiempo de transformao cin equivalente desarrollado por los controles clsicos de la velocidad. Como o a consecuencia, el motor puede alcanzar velocidades muy altas, nunca obtenidas con los sistemas basados en los algoritmos estndar. Debido a la arquitectura del a sistema, una sola FPGA puede manejar varios motores simultneamente sin el a aumento del tiempo de procesamiento. Se mostr como es posible manejar tres o motores paso a paso con una FPGAs estndar de 6000 puertas lgicas. Esta vena o taja hace el sistema muy conveniente puesto que permite el aumento del nmero u de motores, simplemente usando un FPGA ms grande. a

Cap tulo 5. Tcnica de Temporizacin Propuesta e o

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 for the Solution of Linear Systems: Building Blocks for Iterative Methods. Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA. Boemo, E., Jurez, E., and Meneses, J. (1993). Taxonom de multiplicadores. a a Proc. VIII DCIS Conference. Univ. of Malaga., pages 185190. Gerald, C. F. and Wheatley, P. O. (2004). Applied Numerical Analysis. AddisonWesley Publishing Company, Reading, MA, 7th edition. Hayes, J. P. (1996). Introduccin al Diseo Lgico Digital. Addison-Wesley o n o Iberoamericana, Wilmington, Delaware, U.S.A. Hennessy, J. L. and Patterson, D. (1996). Computer Architecture: A Quantitative Approach. Morgan Kaufmann Publishers, Inc., San Francisco, CA. Kenjo, T. and Sugawara, A. (1995). Stepping Motors and their Microprocessor Controls. Monographs in Electrical and Electronic Engineering. Oxford University Press, Oxford, U.K., 2nd reprint edition. Lovrich, A. (1997). Doublelength oating-point arithmetic on the TMS320C30. Application Report SPRA114, Texas Instruments Inc., Houston, Texas. Saad, Y. (2003). Iterative Methods for Sparse Linear Equations. Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, 2nd edition. Texas Instruments (1997). TMS320C3x users guide. SPRU031E revision L 2558539-9761. Thornton, M., Gaiche, J., and Lemieux, J. (1999). Tradeo analysis of integer multiplier circuits implemented in FPGAs. Communications, Computers and Signal Processing IEEE Pacic RIM Conference, pages 301304. Todorovich, E., Sutter, G., Acosta, N., Boemo, E., and Lpez-Buedo, S. (2001). o Relacin entre velocidad y consumo en FPGAs. VII Workshop Iberchip, pages o 16 CD Browser. Van den Bout, D. E. (1999). The Practical Xilinx Designer Lab Book: Version 1.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 Seccin 6.1 se aboro darn los resultados experimentales realizados por la implementacin en DSP. a o Aqu diferentes perles de velocidad son desarrollados y los resultados son mos trados. En la Seccin 6.2 se abordarn los resultados obtenidos por dos implementao a ciones en FPGA. En la primera se explora la posibilidad de cambiar el multiplicador estndar por un multiplicador secuencial. En la segunda implementacin a o en FPGA, Seccin 6.2.1, se realiza un esfuerzo para reducir an ms el tiempo o u a de procesamiento involucrado por el multiplicador, mediante la utilizacin de un o nuevo tipo de multiplicador secuencial. En todos los casos, los resultados experimentales son mostrados y evaluados.

6.1.

Implementacin en DSP o

El objetivo de la implementacin en DSP es desarrollar experiencias que mueso tren la performance realmente necesaria de un sistema basado en microprocesador para ejecutar movimientos con estos perles. Los parmetros con que se midi esta a o

114

Cap tulo 6. Resultados experimentales

115

performance fueron el nmero de instrucciones de multiplicacin-adicin (MACs) u o o y el tiempo total del ciclo de actualizacin del sistema inteligente. Se implemeno taron perles de velocidad trapezoidal, parablico y con curvas-S, teniendo estos o perles una marcada diferencia de implementacin. Las experiencias se realizao ron con las siguientes caracter sticas: Vmn = 500 pasos , Vmx = 1500 pasos y una a s s aceleracin amx = 1000 pasos . o a s2 Se us un DSP TMS320C-50 de Texas Instruments que es un dispositivo de o punto otante de 50 ns por MAC y con un motor paso a paso cuyas caracter sticas son: 400 pasos , momento de inercia 13 107 kg m2 , Tret = 33 107 N m. Los valores rev de la posicin fueron obtenidos a travs de un encoder ptico del tipo incremental o e o de la serie ELAP-E521 con una resolucin de 1024 pulsos por revolucin cuyo moo o mento de inercia 2,5106 kg m2 . Se conect el mismo a travs de un acoplamiento o e de la serie HELICAL-WA25 cuyo momento de inercia es 2,3 106 kg m2 . Se aprecia en la Fig. 6.1 el perl trapezoidal, en la Fig. 6.2 el perl parablico o y en la Fig. 6.3 el perl basado en curvas-S.

Cap tulo 6. Resultados experimentales

116

1500

Perfil de velocidad [pasos/seg]

1000

500

0 0.2 0.4 0.6 0.8 1 1.2 tiempo [seg] 1.4 1.6 1.8 2

Figura 6.1: Perl Trapezoidal adquirido con encoder ptico de 1024 ppr. o

Cap tulo 6. Resultados experimentales

117

1500

Perfil de velocidad [pasos/seg]

1000

500

0.5

1.5

2 2.5 tiempo [seg]

3.5

Figura 6.2: Perl parablico adquirido con encoder ptico de 1024 ppr. o o

Cap tulo 6. Resultados experimentales

118

1500

Perfil de velocidad [pasos/seg]

1000

500

0 0 0.5 1 1.5 tiempo [seg] 2 2.5 3

Figura 6.3: Perl con curvas-S adquirido con encoder ptico de 1024 ppr. o

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 SLOSYN KML093F14C5 cuyas caracter sticas son: 200 paso , torque de retencin o rev Thold = 816 N cm e inercia del rotor 3,32 kg cm2 . Las hojas de datos del fabricante del motor de adjuntan en el apndice E. Los valores de la posicin fueron obtenidos e o a travs de un encoder ptico incremental con una resolucin de 500 pulsos por e o o revolucin. El mismo tiene un momento de inercia asociado de 260 106 oz in s2 y o las hojas de datos del fabricante del encoder de adjuntan en tambin el apndice E. e e El driver, es un SLO-SYN MD808, congurado para producir 1000 pulsos por revolucin, es decir, en un motor de 200 ppr es un modo de micro paso de 1 . Se o 5 aprecia en la Fig. 6.4 el perl trapezoidal, en la Fig. 6.5 el perl parablico y en o la Fig. 6.6 el perl basado en curvas-S. De los resultados obtenidos, es posible vericar que la nueva tcnica funciona e tanto para perles de velocidad con aceleracin constante como para perles con o aceleracin no-constante. o A pesar que los perles implementados poseen diferencias en la implementacin, la formulacin general para los perles de velocidad introducida en la o o Seccin 5.4.1 del Cap o tulo 5 prob ser efectiva. Esto se comprueba ya que el o nmero de MACs adicionales en el ncleo del algoritmo result en slo 8 MACs u u o o para el parablico y 10 MACs para el de curva-S. o Los detalles del hardware en la implementacin en DSP se muestran en el o Apndice B. En el Apndice C se muestran los detalles del diseo del Software del e e n DSP, as como los detalles de su eleccin, as como un resumen de su arquitectura o interna.

Cap tulo 6. Resultados experimentales

120

Velocity Profile 16000

14000

12000

10000 Steps/s

8000

6000

4000

2000

0 1 2 3 4 5 6 Time, [s] 7 8 9 10 11

Figura 6.4: Perl Trapezoidal adquirido con encoder ptico de 500 ppr. o

Cap tulo 6. Resultados experimentales

121

Velocity Profile

16000

14000

12000

10000 Steps/s

8000

6000

4000

2000

0 0 5 10 Time, [s] 15 20

Figura 6.5: Perl parablico adquirido con encoder ptico de 500 ppr. o o

Cap tulo 6. Resultados experimentales

122

Velocity Profile 18000

16000

14000

12000

Steps/s

10000

8000

6000

4000

2000

0 5 10 15 20 Time, [s] 25 30 35 40

Figura 6.6: Perl con curvas-S adquirido con encoder ptico de 500 ppr. o

Cap tulo 6. Resultados experimentales

123

6.2.

Resultados experimentales de la implementacin en FPGA o

De manera de evaluar el funcionamiento del sistema, el algoritmo desarrollado fue implementado en una Xilinx FPGA XC4006-3. Este dispositivo puede funcionar con un reloj de hasta 80 MHz y tiene una capacidad de 6000 puertas de lgicas. Los detalles de la implementacin se muestran en el apndice D. En el o o e mismo se presentan los esquemticos asociados a la implementacin hardware en a o el entorno integrado de diseo para la misma es el Xilinx Foundation Series 3.19i. n En los experimentos se utiliz un motor h o brido cuyas caracter sticas son: o 400 paso , momento de inercia 13 107 kg m2 y torque de retencin Tret = 33 rev 107 N m. No se conect ninguna carga adicional. o La medicin de la posicin fue obtenida mediante un encoder ptico incremeno o o tal ELAP-E521, cuya resolucin es de 1024 pulsos por revolucin y un momento de o o inercia asociado de 2,5 106 kg m2 . El acople fue realizado con un acople elstico a HELICAL-WA25 con un momento de inercia asociado de 2,3 106 kg m2 . La curva de la posicin fue obtenida leyendo la seal del encoder con un o n contador de tiempo de alta resolucin. El perl de la velocidad fue encontrado oo line, realizando derivacin numrica de los datos de posicin del encoder ptico. o e o o El multiplicador funciona con un reloj sincrnico de 40 MHz, con lo que el o tiempo para la multiplicacin es de 400 ns. Se adopto un Tclk = 800 ns, que sigue o siendo despreciable en relacin a la velocidad del motor. o El motor paso a paso debe desarrollar un desplazamiento de 12000 pasos mediante un perl trapezoidal de referencia con las siguientes caracter sticas: o a Vm = 500 pasos , Vmx = 6000 pasos y aceleracin mxima amx = 4200 pasos . n a a s s s2 Los perles resultantes de velocidad y posicin se pueden observar en la o Fig. 6.7. El bajo tiempo de procesamiento, Tclk , permite un perl casi continuo

Cap tulo 6. Resultados experimentales

124

y velocidades muy altas, ms arriba que los generados por algoritmos estndar a a implementados en software. Debido a la caracter stica del perl, el motor de pasos pasa con el rea de la resonancia, tal como se predice en los textos de Acarnley a (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 velocidades en los perles, sin embargo, este efecto no logra sacar de sincronismo a las mquinas ya que las mismas se encuentran en la zona de trabajo por debajo de a la curva de pull-out 1 . De esta manera se evita la prdida de pasos. e
Perfil de posicin
30 25

Posicin, [rev]

20 15 10 5 0 0 0.5 1 1.5 2 2.5 3

Tiempo, [s] Perfil de velocidad


15.0

Velocidad, [rev/s]

12.5 10.0 7.5 5.0 2.5 0 0 0.5 1 1.5 2 2.5 3

Figura 6.7: Perl de velocidad y posicin del accionamiento controlado por un o sistema basado en FPGA.
Previo a la obtencin de resultados experimentales, los perles son simulados para vericar o que la puedan enfrentar la inercia pedida.
1

Cap tulo 6. Resultados experimentales

125

La Fig. 6.8 muestra un perl completo obtenido a las altas velocidades con paso completo. Obsrvese la continuidad en toda la gama efectiva de la velocidad. e
Perfil de velocidad
62.5

50.0

Velocidad, [rev/s]

37.5

25.0

12.5

0.5

1.5

2 Tiempo, [s]

2.5

3.5

Figura 6.8: Perl de velocidad del accionamiento controlado por un sistema basado en FPGA.

La Fig. 6.9 muestra un perl completo obtenido para un aplicacin en mio cropasos. El motor usado en este experimento es un SLOSYN KML093F14C5 cuyas caracter sticas son: 200 paso , torque de retencin Thold = 816 N cm e inercia o rev del rotor 3,32 kg cm2 . Los valores de la posicin fueron obtenidos a travs de un o e encoder ptico incremental con una resolucin de 500 pulsos por revolucin. El o o o driver, con capacidad de manejo de micropasos, es un SLO-SYN MD808, congurado para producir 2000 pulsos por revolucin. Por consiguiente, el sistema debe o generar un perl de alta velocidad con Vm = 500 pasos , Vmx = 50000 pasos y una a n s s

Cap tulo 6. Resultados experimentales

126

aceleracin mxima amx = 5000 pasos . El Tclk adoptado para esta aplicacin fue o a o a s2 de 400 ns de manera de reducir los saltos de la velocidad en Vmx a 1000 pasos , de a s manera que el salto producido sea menor que el 5 % de Vmx . Este efecto puede a observarse, como una componente ondulatoria, en el plateau del perl.
28

Perfil de velocidad

24

20

Velocidad, [rev/s]

16

12

10

15 Time, [s]

20

25

30

Figura 6.9: Perl de velocidad del accionamiento utilizando el modo de micropasos.

El sistema alcanz muy altas velocidades, inalcanzables previamente con los o algoritmos estndares ejecutados por un procesador. Adems el nuevo controlador a a no requiere contadores de tiempo2 , los cuales son necesarios con los sistemas
En la bibliograf anglosajona a los contadores de tiempo por hardware se los conoce como a timers. Los mismos son mdulos que el usuario elige usar, pero son recursos contados. Un DSP o actual tiene en promedio 2 timers de uso general.
2

Cap tulo 6. Resultados experimentales

127

convencionales, y el procesador fue substituido por un FPGA de tamao similar n y costo equivalente.

6.2.1.

Implementacin FPGA en micropasos o

De la seccin anterior se concluye que para reducir el Tc , dos instancias son o posibles: Mejora tecnolgica de la FPGA empleada. o Reduccin del Tc a travs de de un nuevo tipo de multiplicador. o e El primer tem es directo, un cambio en la tecnolog de fabricacin de la a o FPGA, redunda en una mayor velocidad del reloj sincrnico del sistema y por o ende, en una reduccin de la cuantizacin. Sin embargo, una actualizacin teco o o nolgica puede ser costosa y en algunos casos inconveniente debido al cambio en o el encapsulando del dispositivo, valores distintos de tensin de alimentacin y de o o entrada/salida, consumo de potencia, re-diseo del circuito impreso, entre otros. n Otra posibilidad, es utilizar otro tipo de multiplicador secuencial con distintas prestaciones al usado en la Seccin 6.2. Un multiplicador secuencial con caraco ter sticas superiores, se describe en el trabajo Gonzlez et al. (2006). a La Fig. 6.10 muestra un perl de movimientos realizado por el motor. Se observa el perl de velocidad y el perl de posicin. El sistema de accionamiento o es el mismo que se us en las experiencias en modo de funcionamiento por pasos, o analizado en la Seccin 6.2. El sistema ahora debe producir una velocidad de o Vmx = 72000 pasos , para ello se adopta un Tc de 200 ns de manera de reducir los a s saltos de velocidad por debajo de 5 de la Vmx . Como en las mediciones anteriores, a una componente ondulatoria puede observarse en el plateau del perl.

Cap tulo 6. Resultados experimentales

128

Perfil de posicin

Posicin, [rev]

Tiempo, [s] Perfil de velocidad

Velocidad, [rev/s]

Tiempo, [s]

Figura 6.10: Perles de posicin y velocidad para un sistema de accionamiento o en modo micropaso.

6.3.

Conclusiones

De los resultados experimentales realizados en la implementacin con DSP, se o llega a las siguientes conclusiones. El nuevo algoritmo se basa en cmputos ms directos. Experimentalmente o a se demuestra que un Tc ms de cinco veces menor que en los algoritmos a convencionales es alcanzable. Los perles obtenidos por el algoritmo presentan un efecto de cuantizacin en velocidad. Este efecto es inversamente proporcional al Tc , por lo o

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 perl a desarrollar tiene un impacto importante en la implementacin. Como o ejemplo de esto, se aprecia como los perles suaves como el de curvas-S, que poseen una buena caracter stica respecto de jerking, requieren mayor tiempo de clculo que los perles trapezoidales. Por ende, presentan un a problema de cuantizacin ms evidente. o a Para hacer nulos los efectos de la cuantizacin, presente en los resultados obteo nidos con DSP, se implement el algoritmo propuesto en FPGA. De los resultados o experimentales realizados, se arrib a las siguientes conclusiones. o Experimentalmente se demuestra que un Tc ochenta veces menor que con los algoritmo estndares. Si se utiliza un multiplicador incluso ms eciente, a a un Tc ms de 150 veces menor es posible. a Se concluye de las experiencias realizadas que con un Tc reducido con una implementacin hardware, el efecto de cuantizacin es inapreciable incluso o o 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 mquinas en a condiciones de alta dinmica. Un sistema de adquisicin que permiti capturar a o o en tiempo real y registrar los datos cinemticos de las mquinas a alta velocidad a a fue desarrollado para poder adquirir los resultados experimentales mostrados. Los detalles y el diseo de este sistema es desarrollado en el Cap n 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. Gonzlez, S. A., Funes, M. A., and Carrica, D. (2006). Fpga based stepper motor a controller. In Boemo, E., Sutter, G., Todorovich, E., and Lpez-Buedo, S., o editors, Proc. of the II Southern Conference on Programmable Logic, SPL2006, pages 247256, Mar del Plata, Argentina. Surlabs Project. Kenjo, T. and Sugawara, A. (1995). Stepping Motors and their Microprocessor Controls. Monographs in Electrical and Electronic Engineering. Oxford University Press, Oxford, U.K., 2nd reprint edition. Pera, M.-C., Robert, B., and Goeldel, C. (2000). Nonlinear dynamics in electromechanical systems-application to a hybrid stepping motor. Electromotion, 7(1):3142. Robert, B., Alin, F., and Goeldel, C. (2001). Aperiodic and chaotic dynamics in hybrid step motor-new experimental results. In Proceedings of the IEEE International Symposium on Industrial Electronics-ISIE2001, pages 21362141.

Cap tulo 7 Sistema de Adquisicin de o Movimientos


Es necesario contar con un sistema de adquisicin que permita capturar en o tiempo real y registrar los datos cinemticos de las mquinas a alta velocidad. a a Previo al desarrollo de cualquier implementacin de la tcnica de accionamiento o e propuesta es necesario contar con un sistema para poder registrar y evaluar las caracter sticas de estas mquinas en condiciones de alta dinmica. a a La adquisicin y registro de las seales cinemticas de un slo motor es poo n a o sible con la actual tecnolog de computadoras (Bhatti and Hannaford, 1997), a (Blut and Stefan Resmerit, 1997), (Donciu and Rapuano, 2004). Sin embara a a go, la adquisicin de varios ejes a muy alta dinmica, no es posible realizarlo o a con tcnicas tradicionales sin pagar el precio de la enorme cantidad de memoe ria espec ca (high-speed dual-port FIFO) requerida. Particularmente cuando se utilizan sensores pticos de muy alta resolucin. o o El motivo de este obstculo es la gran cantidad de datos que se requieren a 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 Adquisicin de Movimientos o

132

memorias necesarias para guardar los datos sean muy grandes. Cuando son varios los ejes a adquirir los mtodos clsicos se vuelven imprcticos. e a a Para poder resolver estos inconvenientes surgi la idea de desarrollar un mtoo e do de compresin, espec o camente diseado para datos cinemticos provenientes n a de encoders. Esto hizo posible el sistema para el adquisicin y registro de varios o ejes accionados a muy alta dinmica. a

7.1.

Adquisicin de movimientos incrementales o

Actualmente existe un gran esfuerzo en el desarrollo de sistemas de control de movimiento, en donde se buscan mquinas y controles con mejor performance a en cuanto a precisin en la posicin angular y velocidad. Este esfuerzo de ino o vestigacin requiere de sistemas de medicin o sensado de posicin angular de o o o gran precisin y gran velocidad a n de evaluar los avances en el campo de las o mquinas y sus controladores, (Kolokolov et al., 2002). Un sistema de adquisicin a o de movimiento no slo debe visualizar la variable cinemtica muy rpidamente, o a a sino que adems debe registrarla para todo el movimiento. Algunas aplicaciones a especiales, como lo son los hexapod (sistemas de posicionamiento de seis grados de libertad), requieren que el sensado de posicin y velocidad en los 6 ejes sea en o forma continua y con muy alta resolucin. Esto es debido a que estas mquinas o a poseen movimientos de algunos cent metros con precisiones nanomtricas. Sin e sistemas de adquisicin asociados a los ejes de la mquina, el control sobre las o a mismas no podr realizarse. a Para validar tanto el modelo planteado como los sistemas de control es necesario desarrollar un sistema de adquisicin de movimiento de alta performance. o

Cap tulo 7. Sistema de Adquisicin de Movimientos o

133

7.2.

Sistemas de adquisicin de movimiento o

Una de las formas de medir la posicin angular es montando sobre el eje o de rotacin del motor un encoder ptico. El mismo convierte un desplazamiento o o angular en pulsos elctricos. Luego mediante un sistema de procesamiento, se trae ducen las seales de los mismos en informacin digital de la posicin (Rahamam n o o and Poo, 1985), (Bonert, 1989), (Kavanagh, 2000). En aplicaciones de alta dinmica, el mtodo del per a e odo Brown et al. (1992) es preferido, ya que la informacin es obtenida en cada paso del encoder. De esta mao nera se conoce la forma del movimiento con la mxima resolucin posible, lo que a o no puede hacerse con otros mtodos. Una vez obtenida la posicin instantnea, e o a se pueden calcular las dems variables cinemticas (velocidad, aceleracin, etc) a a o simplemente usando un clculo numrico. a e En el mtodo del per e odo, el tiempo que transcurre entre dos ranuras del encoder se mide a travs de un contador de pulsos de per e 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 evolucin de la posicin en funcin del o o o tiempo.
Ti = Ni Tk Ti+1 = Ni+1 Tk

SEAL A MEDIR

CLOCK DE REFERENCIA Tk DATO i = Ni DATO i+1 = Ni+1

Figura 7.1: Mtodo del per e odo.

Cap tulo 7. Sistema de Adquisicin de Movimientos o

134

Debido a que los dispositivos contadores registran un nmero entero de pulsos, u existir una incerteza de un bit en la medicin de los pulsos de encoder. Por lo a o tanto el error es inversamente proporcional a la velocidad de rotacin, ya que, a o medida que sta aumenta, se registran menos pulsos. Este tipo de error puede e 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 clculo debe ser capaz de adquirir a un dato antes de que el encoder entregue otro, para que no se produzca una sobreescritura y por lo tanto prdida de informacin. e o Para alojar los datos temporalmente se requiere el uso de memorias especiales del tipo dual-port. El tamao de la memoria necesaria para almacenar tan slo aln o gunos milisegundos de datos generados se vuelve importante en mquinas de alta a dinmica. Esto a limitado el desarrollo de sistemas on-line para la medicin de la a o posicin y la evaluacin, con precisin, de los sistemas de control de movimiento. o o o En consecuencia es importante desarrollar sistemas de medicin que contemplen o tcnicas que reduzcan la cantidad de memoria necesaria. e

7.3.

Sistema propuesto

El sistema de medicin de alta precisin se fundamenta en el mtodo del o o e per odo. Este utiliza un contador digital para medir el ancho de un pulso. El tiempo entre dos ancos de encoder es:

tenc = NT Tk donde NT es el nmero de pulsos de reloj dentro del tiempo tenc . u Dado que:

(7.1)

Cap tulo 7. Sistema de Adquisicin de Movimientos o

135

v= entonces

xenc tenc

(7.2)

NT Tk = por lo tanto

xenc v

(7.3)

NT =

xenc 1 Tk v

(7.4)

El error relativo de este mtodo est formulado por: e a 1 NT min

emax =

(7.5)

Introduciendo la (7.4) en la (7.5), se obtiene: Tk vmax xenc

emax =

(7.6)

En la ecuacin (7.6) se puede observar que el error es mximo cuando la o a velocidad es mxima. Para reducir este error se debe disminuir Tk ya que xenc a est determinado por la precisin deseada en la medicin de la posicin. a o o o La ecuacin (7.6) se puede reescribir de la siguiente manera: o

emax = Tk f encmax

(7.7)

donde f encmax representa la mxima frecuencia de pulsos que env el encoder. a a Por lo tanto, dada una velocidad angular mxima, para reducir el error es a necesario poder disminuir el Tk . Se observa tambin que a medida que la velocidad e disminuye la precisin mejora. o

Cap tulo 7. Sistema de Adquisicin de Movimientos o

136

En el extremo de velocidades bajas donde los tiempos de los pulsos de encoder resultan muy elevados, el nmero de bits de las palabras que indican el resultado u es tambin muy grande. El tiempo mximo entre pulsos est dado por: e a a

tenc = 2NT max Tk por lo tanto log[tenc /Tk ] log 2

(7.8)

NT max =

(7.9)

entonces el nmero de bits N del contador debe ser: u

N NT max

(7.10)

Debido a la gran cantidad de datos producidos por los encoders, es necesario tener una memoria local, entre la etapa de medicin de los pulsos y el procesador o de datos. Las memorias usadas para este n 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 prdida de datos, e el tamao del buer FIFO debe ser lo sucientemente grande para que no exista n sobreescritura y prdida de la informacin durante el tiempo que tarda el procee o sador en atender al dispositivo ante un pedido de interrupcin. Como procesador o se propone la utilizacin de una PC con un sistema operativo basado en Windows. o En este sistema, el tiempo de latencia, Tlatencia , que es el tiempo que transcurre desde que se efecta el pedido de interrupcin hasta que se inicia la rutina de u o servicio de la misma, es t picamente 123 ms (Brandt and Dannenberg, 1998), para una utilizacin de la CPU del 80 %. o A medida que las velocidades aumentan, tambin es mayor la cantidad de e

Cap tulo 7. Sistema de Adquisicin de Movimientos o

137

informacin que llega al FIFO durante los 123 ms mencionados. La capacidad o m nima del FIFO, Cmin , puede expresarse de la siguiente manera : vmax xenc

Cmin = 2 Tlatencia

(7.11)

El 2 en la ecuacin (7.11) es debido a que el FIFO debe estar lleno slo hasta o o la mitad para solicitar un pedido de interrupcin. Segn la ecuacin (7.11), la o u o cantidad de informacin es directamente proporcional a la velocidad angular del o eje. Por ejemplo, para una velocidad angular mxima de 9000 rpm (utilizando un a encoder de 1024 ppr), el tamao m n nimo del FIFO debe ser de 36900 palabras de N bits. Este tamao es importante tratndose de memorias FIFO, por lo que es n a muy conveniente introducir tcnicas para su reduccin. A n de reducir el tamao e o n de esta memoria, se introduce una tcnica de compresin de datos en tiempo real. e o

7.4.

Tcnica de compresin e o

Esta tcnica de compresin se desarroll en base al concepto de que a medida e o o que la velocidad crece, el contador registra menos pulsos del clock de referencia, como puede observarse en el grco de la Fig. 7.2. Por tanto, los bits ms signia a cativos de la palabra digital que representa el per odo no habrn cambiado, y a sern iguales a cero, por lo que sern redundantes y pueden ser desechados. Si a a el mdulo del contador es N y la informacin util est contenida en los Q bits o o a menos signicativos, habr N Q bits redundantes. a 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 nmero de palabras que contienen informacin util sin redundancias. u o Para que el procesador sea capaz de reconstruir cada dato contenido en una

Cap tulo 7. Sistema de Adquisicin de Movimientos o

138

Figura 7.2: Reduccin del nmero de pulsos con el aumento de la velocidad. o u

lectura, ser necesario adicionar P bits, que indiquen la conguracin contenida a o en una lectura del dispositivo contador. Por lo tanto el procesador deber leer, a nalmente, 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 exhibirlos en forma grca. El contador digital de N = 24 bits es el que implementa a el mtodo del per e 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 decodicador de ancho de palabra detecta los bits redundantes, e indica el tamao de la palabra util a almacenar, en combinaciones n

Cap tulo 7. Sistema de Adquisicin de Movimientos o

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 habilitacin de los registros determina cundo se o a producir el desplazamiento y los bits menos signicativos, que contienen infora macin util, se almacenarn en el segundo registro, quedando en el primero los o a bits redundantes, que sern desechados cuando una nueva palabra de encoder los a sobrescriba.

Encoder incremental
d23 d0

Decodificador de ancho de palabra Contador Control de habilitacin

Generador de palabra de control

2 k

Clock de referencia

Registro de desplazamiento

Generador de sincronismo

Registro de desplazamiento
24

FIFO

Figura 7.3: Diagrama en bloques del sistema. Dnde k es el nmero de motores. o u

En la memoria FIFO se almacenan palabras de 32 bits, 24 de los cuales contienen varias palabras del encoder con informacin util, y una palabra de control o adicional, de P = 4 bits, suministrada por el circuito generador de palabra de control, para indicarle al procesador qu combinacin de palabras se almacenar en e o a un slo dato. Con los datos de 4 bits se forma un diccionario que indica 16 combio naciones de palabras de encoder con distinta cantidad de bits, como puede verse en la Tabla 7.1.

BUS ISA

Cap tulo 7. Sistema de Adquisicin de Movimientos o

140

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Combinaciones 24 12 12 12 8 12 888 886 8 12 88 868 866 6666 666 668 688 686 66

Palabra de Control 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Tabla 7.1: Diccionario de compresin. o Para la conformacin del diccionario se generaron las combinaciones posibles o entre palabras de 6, 8, 12 y 24 bits, y teniendo en cuenta las caracter sticas de continuidad de los perles de velocidad se descartaron aquellas cuya posibilidad de ocurrencia es menor. Entre las palabras seleccionadas se contemplaron tambin los e casos que pudieran ocurrir si se produjeran discontinuidades o saltos de velocidad. Con este esquema de compresin de datos se logra almacenar la evolucin de o o la posicin angular con un FIFO hasta cuatro veces ms pequeo. o a n Dado que se utilizan slo 24 bits de los 32 bits disponibles, de los 8 bits restano tes, 4 bits conforman la palabra del diccionario que permite la decodicacin, 1 o bit indica la direccin de la rotacin y los tres ultimos bits indican el canal o motor o o medido, en caso de adquirir varios motores en forma simultnea. Se env un slo a a o bit de sentido ya que cuando se produzca compresin de datos no habr cambio o a en el sentido de giro debido a que las inversiones de la rotacin se producen a o

Cap tulo 7. Sistema de Adquisicin de Movimientos o

141

velocidades bajas, por lo que los datos generados sern de 24 bits. a

7.4.1.

Descompresin de los datos o

En cuanto al procesamiento y descompresin de los datos, estos son extra o dos del buer FIFO por el procesador y almacenados en la memoria principal de la PC. El proceso de medicin se completa cuando los datos generados son reconstruidos o v software. Las palabras digitales adquiridas y almacenadas en la PC, contienen a varios datos con informacin comprimida del encoder y para poder realizar alguna o operacin aritmtica con los mismos, y poder calcular la posicin o la velocidad, o e o es necesario descomprimir la informacin reconstituyendo el valor original de esos o datos. Para realizar la descompresin se dene una clase de objetos en C++, llamada o decodicacin. Dentro de esta clase se declaran algunas variables, que pueden o ser accedidas slo por objetos de la misma clase, y una serie de funciones que o manejan esas variables y comunican los resultados con el programa principal y otros objetos. En la Fig. 7.4 se observa el diagrama de ujo del proceso de descompresin. o Un dato almacenado en memoria, al que se le debe recuperar la informacin o original, es introducido en un objeto de la clase decodicacin. Se seleccionan o los bits 24 a 27, obtenindose la palabra de decodicacin y la misma es almae o cenada en w control. Segn el valor de w control, se busca en el diccionario y u se identica qu conguracin de datos hay en la palabra adquirida, es decir, la e o cantidad n de estos y el nmero de bits que los componen. La conguracin se u o almacena en la variable w deco y tambin se asigna el valor a n. e Una vez identicada la conguracin de los datos a recuperar, comienza el o proceso de descompresin propiamente dicho. Se identica la cantidad de bits o

Cap tulo 7. Sistema de Adquisicin de Movimientos o

142

que contiene el primer dato almacenado en la palabra adquirida. Esto se consigue aplicando una mscara a los cuatro bits menos signicativos de w deco, a que est formada por nmeros en hexadecimal, como 0x6, 0x8, 0xC y 0xF, que a u indican 6, 8, 12 y 24 bits respectivamente. Sabiendo, entonces, la cantidad de bits, que forman el dato, se lo recupera aplicando una mscara sobre los bits utiles. Antes de reiniciar el proceso para a 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 Adquisicin de Movimientos o

143

Adquirir Lectura

Signo = Lectura * 0x10000000

w_control = Lectura * 0x0f000000

w_deco=Buscar en diccionario n=Nro. de palabras a decodificar

i=0

Mscara = cantidad de bits de la palabra a recuperar

Dato_final = Lectura * Mscara

Almacenar Dato_final y Signo

Desplazar Lectura hacia la derecha segn Mscara

Desplazar w_deco 4 bits a la derecha

Si

i<n ? No

Si

Hay ms datos ?

No Fin

Figura 7.4: Diagrama de ujo del proceso de descompresin de datos. o

Cap tulo 7. Sistema de Adquisicin de Movimientos o

144

7.5.

Resultados experimentales

Se implement un sistema de medicin capaz de medir frecuencias de eno o 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 especicacin se utiliz un o o clock de 20 MHz (Tk = 50 ns) y un contador de N = 24 bits. Se utiliz una FPGA XC4006 de Xilinx para albergar la lgica digital que o o implementa la medicin del per o odo, el control del almacenamiento de los datos y la administracin del bus ISA, tal como se muestra en la Fig. 7.5. El banco de o memoria FIFO fue implementado a partir de cuatro dispositivos de Integrated Devices IDT7206 de 16 K 9bits.
Memoria de configuracin Oscilador

Control de IRQ

Conector de entrada

/
Compresin de datos
8

IDT7206 IDT7206 IDT7206 IDT7206 Banco FIFO

Medicin perodo

/ /

/
32

/ /
16

8 8

/
Puerto de E/S FPGA Decodificador de direcciones

Figura 7.5: Sistema de medicin o

Para vericar la exactitud de las mediciones se emularon las seales de un n

Bus ISA

16

Cap tulo 7. Sistema de Adquisicin de Movimientos o

145

encoder con un generador de funciones digital Hewlett Packard 33120A y se analizaron los datos generados comparndolos con la medicin de los pulsos en un a o contador Hewlett Packard HP5308A. Los resultados de las mediciones se muestran 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 desviacin mxima del error y, en trazo continuo, una aproximacin de segundo o a o orden del mismo. A la mxima frecuencia especicada de 150 kHz, se midi el per a o odo de los pulsos con el contador universal resultando igual a 6,666709 s y con un error de la medicin de 0,64 %, menor que el l o mite propuesto de 0,75 %.

Cap tulo 7. Sistema de Adquisicin de Movimientos o

146

10

Medido Adquirido

Perodo [us]
10
1

10

10 Frecuencia [kHz]

(a) Mediciones para frecuencias de entrada de 10 kHz a 150 kHz.

Medido Adquirido

10

Perodo [us]

10 Frecuencia [kHz]

(b) Detalle de las mediciones para frecuencias mayores a 100 kHz.

Figura 7.6: Mediciones de per odo.

Cap tulo 7. Sistema de Adquisicin de Movimientos o

147

2 1.8 1.6 1.4

Error relativo (%)

1.2 1 0.8 0.6 0.4 0.2 0

50

100

150 Frecuencia [kHz]

200

250

300

Figura 7.7: Error relativo de las mediciones.

Cap tulo 7. Sistema de Adquisicin de Movimientos o

148

7.6.

Conclusiones

Se dise e implement un sistema que permite medir de forma on-line la no o evolucin dinmica de la posicin de mquinas rotativas, utilizando como transo a o a ductor un encoder ptico y una PC para procesar y visualizar los datos generados. o El sistema de medicin de alta precisin y alta velocidad fue posible gracias a o o la utilizacin de una tcnica de compresin de datos en tiempo real que logra o e o reducir hasta cuatro veces la capacidad de almacenamiento de la memoria FIFO utilizada como buer y los requerimientos de memoria del host. Este sistema de compresin y descompresin no introduce ninguna degradacin en los datos. Se o o o 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 interrupcin al CPU deben minimizarse. El error en las mediciones obtenio do es producto del sistema de medicin del periodo. Este error permanece bien o por debajo del 1 % para el rango de velocidades de las mquinas rotativas entre a 0,072 rpm y 9000 rpm usando un encoder de 1024 ppr.

Cap tulo 7. Sistema de Adquisicin de Movimientos o

149

Referencias
Bhatti, P. and Hannaford, B. (1997). Single-chip velocity measurement system for incremental optical encoders. IEEE Trans. Contr. Syst. Technol., 5(6):654661. Bonert, R. (1989). Design of a high performance digital tachometer with a microcontroller. IEEE Trans. Instrum. Meas., 38(6):11041107. Brandt, E. and Dannenberg, R. B. (1998). Low-latency music software using o-the-shelf operating systems. In Proceedings of the International Computer Music Conference, pages 137141, San Francisco, California. International Computer Music Association. Brown, R., Schneider, S., and Mulligan, M. (1992). Analysis of algorithms for velocity estimation from discrete position versus time data. IEEE Trans. Ind. Electron., 39(1):1119. Blut, G. and Stefan Resmerit (1997). On the numerical speed control of a a a electrical drive systems using stepping motors. In Proceedings of the IEEE International Conference on Intelligent Engineering Systems, INES97, pages 357360, Budapest, Hungary. Donciu, C. and Rapuano, S. (2004). A distributed measurement system for stepping motors study. In Proceedings of the 21st IEEE Instrumentation and Measurement Technology Conference, IMTC2004, volume 2, pages 996999, Como, Italy. Kavanagh, R. C. (2000). Improved digital tachometer with reduced sensitivity to sensor nonideality. IEEE Trans. Ind. Electron., 47(4):890897. Kolokolov, Y. V., Koschinsky, S. L., and Adjallah, K. H. (2002). Data acquisition aspects in experimental research of electromechanical systems dynamics. IEEE Trans. Instrum. Meas., 51(1):107114. Rahamam, M. F. and Poo, A. (1985). Optical encoders interfaces for digital speed and position control and systems considerations. Proceedings of Applied Motion Control Conference, pages 176180.

Cap tulo 8 Conclusiones y Trabajos Futuros


La presente tesis aporta nuevas metodolgicas y tcnicas para el accionamiento o e de mquinas de movimiento incremental, particularmente cuando las mismas son a accionadas a altas velocidades. A continuacin se expone las conclusiones de cada o tema abordado. Se derivaron dos modelos matemticos para estos accionamientos segn la vaa u riable de control. Un modelo con corrientes impuestas y otro modelo con tensiones impuestas. Se logr un aporte totalmente general lo que permiti el desarroll un o o o toolbox de Matlab/ Simulink. Se realiz un estudio comparativo de los perles de velocidad. Se obtuvo una o forma generalizada de los mismos de forma de particularizarlos para la aplicacin o en sistemas de control de movimientos digitales. El estudio comparativo realizado fue de carcter general, abarcando de forma sistemtica los que son de utilidad a a en sistemas de control de movimiento. Mediante este estudio, se pudo determinar el perl ms adecuado cuando los parmetros como la distancia y el tiempo de a a movimiento estn impuestos. En particular cuando se requiere un desplazamiena to con una aceleracin mxima impuesta. Esto permiti especicar claramente o a o qu perl y con qu parmetros deben implementarse en sistemas de control de e e a 150

Cap tulo 8. Conclusiones y Trabajos Futuros

151

movimiento cuando son accionados a muy alta velocidad. De esta forma, se pudo realizar desarrollos tecnolgicos como los realizados para el Compact Linear o Collider (CLIC), donde 6 ejes son controlados simultneamente a alta velocidad a con perles de velocidad. Se desarrollaron algoritmos optimizados que no necesitan recursos de hardware adicionales y permiten el accionamiento de mquinas de movimiento incremena tal a gran velocidad debido al m nimo tiempo computacional. Se desarrollaron simulaciones y se las compar con los resultados obtenidos implementando el o algoritmo en un DSP TMS320C30-50 de Texas Instruments y un motor de aplicacin industrial SLOSYN KML093F14C5. Se logr un T c = 6,4 us con el perl o o trapezoidal que es ms de 5 veces menor que los obtenidos previamente con los a algoritmos estndar. Con este tiempo de procesamiento se lograron velocidades a mximas de 15000 pps. a Los mismos algoritmos se adecuaron para implementarse en un arreglo lgico o programable (ALP). Esto permiti que el algoritmo desarrollado pueda ejecutarse o ms rpidamente y por consiguiente demostrar sus capacidades de comandar a a a muy alta velocidad. Se logr desarrollar un prototipo controlador basado en una o Xilinx FPGA XC4006-3 lo que demostr que el algoritmo es sucientemente como pacto y exible para poder ser implementado en ALPs. Se logr un T c = 200 ns o que es ms de 150 veces menor que los obtenidos con los algoritmos estndar. Con a a este tiempo de procesamiento se lograron velocidades mximas de 62,5 rev / s que a en un motor de 400 p / rev es ms de 25000 pps. Debido a esto, se logr adems a o a extender los resultados a multiplicidad de accionamientos con un slo sistema o inteligente. Se dise e implement un sistema que permite medir de forma on-line la no o evolucin dinmica de la posicin de mquinas rotativas. El mismo utiliza como o a o a

Cap tulo 8. Conclusiones y Trabajos Futuros

152

transductor un encoder ptico de alta precisin y una PC para procesar y visualio o zar los datos generados. El sistema de medicin de alta precisin y alta velocidad o o fue posible gracias al desarrollo de una nueva tcnica de compresin de datos e o en tiempo real. La misma logra reducir hasta cuatro veces los requerimientos de memoria FIFO de doble entrada utilizada como buer. El sistema desarrollado se comunica con el host a travs del bus ISA (Industry Standard Architecture). Grae cias al algoritmo de compresin de datos desarrollado, el sistema puede funcionar o con cualquier sistema operativo moderno a pesar del gran per odo de latencia que los mismos poseen. Con el actual sistema de compresin, se logr adquirir hasta 4 o o ejes simultneamente a mxima velocidad, cosa que no era posible anteriormente. a a El error en las mediciones obtenidos se mantuvo bien por debajo del 1 % para el rango de velocidades de las mquinas rotativas entre 0,072 rpm y 9000 rpm a usando un encoder de 1024 ppr.

8.1.

Publicaciones realizadas como parte de esta Tesis

Con la modelizacin de estas mquinas le logr un aporte totalmente general, o a o lo que permiti el desarroll un toolbox de Matlab/ Simulink. Los archivos o o pertenecientes a este trabajo, se hicieron pblicos mediante el siguiente medio: u Stepper Motor ToolBox for Matlabv1.0, Math Works web site: http://www.mathworks.com/matlabcentral/. Los resultados del estudio comparativo de los perles de velocidad se plasmaron en el trabajo del congreso iberoamericano de control automtico: a

Cap tulo 8. Conclusiones y Trabajos Futuros

153

Sergio Alejandro Gonzlez y Daniel Oscar Carrica, Estudio comparativo de a perles de velocidad en accionamiento de mquinas rotativas, XIV Congrea so de la asociacin Chilena de Control Automtico, 23-27 de Octubre 2000, o a Universidad del BIO-BIO, Concepcin, Chile. o Los resultados con los nuevas tcnicas algor e tmicas se plasmaron en los trabajos que a continuacin se detallan: o Daniel Oscar Carrica, Sergio Alejandro Gonzlez y Mario Benedetti, A Noa 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 Gonzlez y Mario Benedetti, A High a Speed Velocity Control Algorithm of Multiple Stepper Motors, Mechatronics, Vol. 14, No. 16, pp. 675-684, Elsevier Science Publishers, August 2004, Amsterdam, The Netherlands. Los resultados obtenidos con el nuevo algoritmos y su implementacin en un o arreglo lgico programable (ALP) se volcaron en el siguiente trabajo: o Daniel Carrica, Marcos Funes y Sergio Alejandro Gonzlez, Novel Stepper a Motor Controller Based on FPGA Hardware Implementation, IEEE/ASME Transactions on Mechatronics, Vol. 8, No. 1, March 2003, New York, USA. Estos resultados tambin se plasmaron en los trabajos que a continuacin se e o detallan:

Cap tulo 8. Conclusiones y Trabajos Futuros

154

Daniel O. Carrica, Sergio Alejandro Gonzlez y Marcos Funes Nuevo sistema de a generacin de perles de velocidad basado en arreglos lgicos programables, o o XVII Congreso Argentino de Control Automtico AADECA 2000, 11-13 de a Septiembre 2000, Bs.As., Argentina. Sergio Alejandro Gonzlez, Marcos A. Funes y Daniel Carrica FPGA based a stepper motor controller, II Southern Conference on Programmable Logic, SPL2006, March 8-10, 2006, Mar del Plata, Argentina. Los resultados, diseo e implementacin de un sistema que permite medir y n o registrar la evolucin dinmica de la posicin de mquinas rotativas se volcaron o a o a en los Proceedings de los siguientes congresos: Sergio Alejandro Gonzlez, Fernando Rodriguez-Betelu y D.O. Carrica, Mea dicin de la posicin angular con elevada resolucin en accionamientos de alta o o o dinmica, IX Reunin de Trabajo en Procesamiento de la Informacin y Cona o o trol, IX RPIC, Santa Fe, Septiembre de 2001. Sergio Alejandro Gonzlez, Daniel Carrica y Mario Benedetti, Medicin de la a o posicin angular con elevada resolucin en accionamientos de alta dinmica, o o a II Southern Conference on Programmable Logic, SPL2006, March 8-10, 2006, Mar del Plata, Argentina.

8.2.

Trabajo futuro

En las distintas temticas abordadas, diversas e interesantes l a neas de investigacin se vislumbran, tanto desde el punto de vista tecnolgico como por el o o terico. o Un aspecto tecnolgico interesante ser abordar los problemas asociados a la o a contaminacin acstica generada por el driver del motor y por la secuencia de o u

Cap tulo 8. Conclusiones y Trabajos Futuros

155

accionamiento. A travs de las experiencias realizadas se detect una importane o te contaminacin sonora que es indeseable en los ambientes industriales donde o no slo se tiene un motor, sino que hay muchos de ellos para producir los difeo rentes servo-mecanismos necesarios. Una solucin posible consistir en utilizar, o a para la generacin del perl de velocidad, algoritmos estocsticos, procesos tipo o a markovianos, para desconcentrar el contenido armnico. o La experiencia en la optimizacin de tiempos de procesamiento es totalmente o general y podr ser aplicable a otras situaciones que involucren menor tiempo a de clculo. Una situacin de similar aplicacin podr ser el campo del procesaa o o a miento de seales. Concretamente, en la aplicacin en ltros iterativos, donde el n o tiempo de reconocimiento y tratamiento de seales complejas es muy cr n tico. Los algoritmos de reduccin de tiempos de procesamiento podr ser de utilidad a o an la hora de mejorar sistemas ya existentes. Para ello el objetivo es el desarrollo de algoritmos aplicables a ltros ya que son de amplia utilizacin en todas las o ciencias de la ingenier a. Con respecto a los sistemas de adquisicin de movimientos, existen aspectos o tecnolgicos que ser de gran utilidad agregar al sistema. Uno de ellos es la o an conexin con el host, la que actualmente se realiza a travs del bus ISA. Se podr o e a pensar en los buses PCI (Peripheral Component Interconnect) y particularmente en su implementacin ms moderna, el PCI Express (PCIe), ver Bhatt (2005), o a Kolbehdari et al. (2005). Por lo que ser deseable que la FPGA sea capaz de poder a contener la lgica para conectarse al bus. Por otro lado, el banco de memoria o FIFO, ahora externo, es deseable que pueda ser incorporado dentro de la misma FPGA. Tecnolog actual de FPGAs, con gran capacitad en recursos lgicos estn a o a hoy disponibles, por lo que la implementacin en FPGA tanto de la conexin con o o el host basado en PCI y la incorporacin de los bancos FIFO es posible. o

Cap tulo 8. Conclusiones y Trabajos Futuros

156

Referencias
Bhatt, A. V. (2005). Creating a third generation i/o interconnect. Technical report, Desktop Architecture Labs - Intel Corporation, Hillsboro, OR. Kolbehdari, M., Harriman, D., Koker, A., and Saunders, S. K. B. (2005). The emergence of pci express in the next generation of mobile platforms. Intel Technology Journal, 9(1):2133. Wilen, A., Schade, J., and Thornburg, R. (2005). Introduction to pci express - a hardware and software developers guide. Technical report, Intel Corporation, Santa Clara, CA.

Apndice A e Publicaciones
A continuacin se presentan los trabajos publicados sobre la temtica. La o a presentacin de los mismos en este apndice sigue una cronolog de los trabajos o e a publicados entre el ao 2001 y el 2004. n

157

Apndice A. Publicaciones e

158

Mechatronics 14 (2004) 675684

A high speed velocity control algorithm of multiple stepper motors q


D.O. Carrica
a

a,b

, S.A. Gonzlez a

a,c,* ,

M. Benedetti

a,b

Universidad Nacional de Mar del Plata, Laboratorio de Instrumentacin y Control, o Mar del Plata B7608FDQ, Argentina b Consejo Nacional de Investigaciones Cient cas y Tcnicas, Argentina e c Comisin de Investigaciones Cient o cas, Argentina

Abstract When the applications involve the simultaneous control of multiple stepper motors conventional 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 Engineering 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 obtained. 2004 Elsevier Ltd. All rights reserved.
Keywords: Motion control; Velocity proles; 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 prole generation of up to six stepper motors in the alignment system of the CERN Compact Linear Collider (CLIC) application [13].

This work was supported by the Universidad Nacional de Mar del Plata (ING-15/G064) and the Agencia Nacional de Promocin Cient o ca y Tecnolgica (BID 1201/OC-AR 2000). o * Corresponding author. Address: Universidad Nacional de Mar del Plata, Laboratorio de Instrumentaci n y Control, Mar del Plata B7608FDQ, Argentina. o a E-mail address: sagonzal@.mdp.edu.ar (S.A. Gonzlez). 0957-4158/$ - see front matter 2004 Elsevier Ltd. All rights reserved. doi:10.1016/j.mechatronics.2004.01.006

Apndice A. Publicaciones e

159

676

D.O. Carrica et al. / Mechatronics 14 (2004) 675684

The precise positioning of the motors require the use of velocity proles, 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 proles can be trapezoidal, sinusoidal or parabolic [4]. Within a general step motor control system, there are two main functions: (1) the velocity prole generation block, (2) the indexer block. After velocity proles are generated, they have to be translated into pulse intervals by the indexer. Each index pulse means that the motor must increment 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 prole in the form of current or voltage. The velocity prole generation requires the following data: the type of prole, 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: oline or on-line schemes. 1.1. O-line In the o-line schemes the timing of the steps is calculated prior the motion prole [5,6]. The velocity prole 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 exibility. They do not allow real time modication of the motion prole. They are calculated using parameters of an specic load which can vary due to aging, environment temperature, etc. Therefore, the obtained proles 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 proles 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 owchart of one basic scheme can be seen. This owchart contains two main blocks: Vrk construction, where the velocity prole is actually developed, and Dtk calculation, where the time between the current step and the next is calculated. That is, Vrk is the velocity prole generation and Dtk is the indexer. Often a common block is shared because a single equation computes both the velocity prole and the Dtk . For example, Eqs. (1) and (2) express a typical algorithm for a trapezoidal prole [7].

Apndice A. Publicaciones e

160

D.O. Carrica et al. / Mechatronics 14 (2004) 675684

677

Fig. 1. On-line algorithms.

2 Dtk p p 2 2N k 1a 2 Vmax Vmax 2N 1a Vk 1 step Dtk

where Vk 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 prole and Dtk is the time between the k-esim step, and the previous one, i.e. Eq. (3). Dtk tk tk1 3

These schemes as well as the o-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 resolution, Tr , aects the maximum speed as in Eq. (4):

Apndice A. Publicaciones e

161

678

D.O. Carrica et al. / Mechatronics 14 (2004) 675684

Vmax

1 Tr Tc

Current timer resolutions are small enough to discard the Tr in front of the Tc . Therefore, Eq. (4) turns into Eq. (5). Vmax 1 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 eective 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 oating 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 Dtk one can assume that Dtk 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) (2) (3) (4) Let nk 1. Assume Dtk nk Tc . Verify the previous assumption. If the verication 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). Dtk nk Tc where nk is a positive integer number. Point 3s objective is to verify if Eq. (7) is true. Vrk 1 Dtk 7 6

where Vrk is the reference velocity at the k-esim step. 1 Dtk is incremented as iterations are executed, in the same way Dtk is decremented. This explains the fact that it is necessary to wait for a number of iterations for accomplishing Eq. (7).

Apndice A. Publicaciones e

162

D.O. Carrica et al. / Mechatronics 14 (2004) 675684

679

From Eq. (6) it can be seen that the resolution of Dtk is Tc , due to this, the equality in Eq. (7) cannot be possible. Thus, Eq. (7) becomes the comparison stated in Eq. (8). Vrk P 1 Dtk 8

Eliminating the division in Eq. (8) is mandatory for reducing the computing time. Therefore a simple contraction as in Eq. (9) is preferred. Vrk Dtk P 1 Point 4 of the process is a way of executing Eq. (10). nk nk 1 10 9

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 computations here are very straightforward. To conclude, the algorithm consists on a periodic accumulative sum until the intended velocity is reached. Fig. 2 shows the owchart of a system that implements Eqs. (6), (7), (9) and (10). The velocity proles block was previously introduced in Fig. 1. From Eq. (6), Dtk 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 owchart.

Apndice A. Publicaciones e

163

680

D.O. Carrica et al. / Mechatronics 14 (2004) 675684

Fig. 3. Intended velocity prole.

commanded velocity proles are displayed. Since the term Dtk is a multiple of Tc and nk P 1, it turns out that the speed commanded has the following characteristics: 8 > Vmax ; nk 1 >V > max > < 2 ; nk 2 1 1 11 Vkn . . . Dtk nk Tc > . > . >. >V : max ; nk K K As an example, Fig. 3 shows a trapezoidal prole 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 , nk changes to 6. As a consequence a higher speed of Vmax =6 occurs. At t2 , nk 5 produces a commanded speed of Vmax =5. It then follows that at time t6 the commanding speed is Vmax which equals the intended velocity prole. The quantication eect is more remarkable at higher speeds when Dtk times are of the order of Tc . This eect is less important in the standard algorithms since it is only produced by timer resolution Tr which is smaller. The eect can also be explained 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, higher speeds can only be reached by a low loop update time.

Apndice A. Publicaciones e

164

D.O. Carrica et al. / Mechatronics 14 (2004) 675684

681

Until now, the indexer algorithm was developed. Following the trend to reduce the computing time, a set of equations to generate the reference speed prole is presented [8]. The idea is to arrange an algorithm general enough to develop any kind of prole such as a trapezoidal, an S-curve, or a parabolic. The instantaneous velocity function can be expressed by the Eq. (12). vkn vkn1 akn Tc 12

where vkn is the current speed, vkn1 the speed in the previous iteration, akn is the current acceleration and Tc is the iteration time. The acceleration in Eq. (12) is a variable whose expression can describe any prole. Acceleration akn can be expressed 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). akn up akn1 C1 C2 k n akn down akn1 C3 C4 n 13 14

The constants C1 , C2 , C3 and C4 change accordingly to the desired prole [9]. For example C1 C2 C3 C4 0 for a trapezoidal and C3 C4 0 for a parabolic. The null coecients 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 prole 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 aect 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 ve 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 prototype hardware where six motors must be controlled simultaneously, it has communication capacity with other hierarchic systems in order to produce the complete motion prole through all the sections. A a 50 ns per instruction oating point DSP [10] was used in this test hardware to evaluate the impact of the Tc on triangular, parabolic and S-curved velocity proles. The experiences were carried out with Vmin 500 step/s, Vmax 18; 000 step/s and amax 1500 step/s2 .

Apndice A. Publicaciones e

165

682

D.O. Carrica et al. / Mechatronics 14 (2004) 675684

Fig. 4. Motor layout in the girders and in the quadrupoles.

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 incremental encoder with a resolution of 500 pulses per revolution. The results for a trapezoidal prole are appreciated in Fig. 5, for the parabolic prole in Fig. 6 and for the S-curve based prole in Fig. 7. The cycle time obtained for the three proles is shown in Table 1. Table 1 and Figs. 57 denote the impact of the type of prole 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 require more time than trapezoidal one because Eqs. (13) and (14) have less null coecients.

Velocity Profile
16000 14000 12000

Steps/s

10000 8000 6000 4000 2000 0 1 2 3 4 5 6 7 8 9 10 11

Time, [s]
Fig. 5. Trapezoidal prole.

Apndice A. Publicaciones e

166

D.O. Carrica et al. / Mechatronics 14 (2004) 675684

683

Velocity Profile
18000 16000 14000 12000

Steps/s

10000 8000 6000 4000 2000 0 5 10 15 20 25 30 35 40

Time, [s]
Fig. 6. Parabolic prole.

Velocity Profile
16000 14000 12000

Steps/s

10000 8000 6000 4000 2000 0 0

10

15

20

Time, [s]
Fig. 7. S-curve prole.

Table 1 Comparative results Prole Trapezoidal Parabolic S-curve Tc (ls) 6.3 8.7 9.2

Apndice A. Publicaciones e

167

684

D.O. Carrica et al. / Mechatronics 14 (2004) 675684

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 quantization eects in the proles. 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-EPAC2000. Vienna, Austria, 2000. p. 4852. Available from: http://accelconf.web.cern.ch/accelconf/e00/. [3] Poirier P. Lalignement 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, Gonzlez S. Algoritmo eciente para la generacin de perles de velocidad en el a o accionamiento simultneo de m ltiples motores paso a paso. In: ANALES VIII Reunin de Trabajo a u o en Procesamiento de la Informacin y Control, vol. 1. Facultad de Ingenieria, UNMdP, Mar del o Plata, Argentina, 1999. p. 11822. [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. 2530. [6] Kang Z, Qu S. A new methodology for using single microprocessor to control DC stepper motors. In: I. of Electrical & Electronics Engineers Sta, editor. Proceedings of the IEEE International Conference on Industrial Technology. Piscataway, NJ, USA: IEEE Press; 1994. p. 5435. [7] Kenjo T, Sugawara A. Stepping motors and their microprocessor controls, monographs in electrical and electronic engineering. Oxford, England: Oxford University Press; 1994. [8] Petrovi J, Strmnik S. A microcomputer-based speed controller for lift drives. IEEE Trans Ind Appl cc c 1988;24(3):48798. [9] Gonzalez SA, Carrica DO. Anlisis de perles de velocidad en accionamientos de tipo incremental. a In: ANALES XIV Congreso Chileno de Control Automtico, vol. 3. Asociacin Chilena de Control a o Automtico, Concepcin, Chile, 2000. p. 21926. a o [10] T. Instruments, TMS320C3x Users Guide, Texas Instruments Inc., Houston, Texas, 1997. SPRU031E revision L 2558539-9761. a [11] Carrica DO, Gonzlez 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. 35965.

Apndice A. Publicaciones e

168

Apndice A. Publicaciones e

169

Apndice A. Publicaciones e

170

Apndice A. Publicaciones e

171

Apndice A. Publicaciones e

172

Apndice A. Publicaciones e

173

Apndice A. Publicaciones e

174

Apndice A. Publicaciones e

175

120

IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003

Novel Stepper Motor Controller Based on FPGA Hardware Implementation


Daniel Carrica, Senior Member, IEEE, Marcos A. Funes, and Sergio A. Gonzlez, Member, IEEE
AbstractThis paper proposes a novel stepper motor controller based on field programable gate arrays, showing a remarkable performance. The system provides a combination between a novel algorithm and programmable logic to achieve both high speed and high precision on a compact hardware. Index TermsField programable gate arrays (FPGA), motion control, stepper motor.
Fig. 1. Complete control system.

I. INTRODUCTION

N HIGH precision stepper motor applications, it is necessary to use motors with small steps whose size is imposed by the required resolution. Another alternative is the technique of microstepping, where the motor step size is further reduced by means of control. As microsteps are related to very little displacements, a great quantity of microsteps are required to get the total displacement. Total displacement should be executed in an acceptable time. As a consequence, the time between microsteps should be reduced. A high-speed data transmission between controller and driver is mandatory when indexing in microstepping mode of operation. Furthermore, open loop applications are much less expensive than close loop ones due to encoders. If open loop is chosen, velocity profiles have to be used in order to avoid the step lose effect. A general system for the commanding of a stepper motor is shown in Fig. 1. There are three functions: 1) the velocity profile 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 translated into pulse intervals by the indexer. Each index pulse means that the motor must increment its rotor position in one step/microstep, hence the name indexer. This block functions as a velocity-to-time translator. This block is unique to the commanding of incremental motion devices since other types

of motors can be commanded just by applying the velocity profile in form of current or voltage [1], [2]. The implementation of the controller of Fig. 1 can be performed by two alternatives: off-line or on-line schemes. A. Off-Line In the off-line schemes the timing of the steps/microsteps is calculated prior the movement [3], [4]. 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 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. B. On-Line An intelligent system carries out the operation of calculating the index pulses through a time lagging sequence generation algorithm. In Fig. 2 a flowchart of one basic scheme can be seen. construction, This flowchart contains two main blocks: where the velocity profile is actually developed, and calculation, where the time between the current step and the next is calculated. That is, is the velocity profile generation and is the indexer of Fig. 1. Often a common block is shared because a single equation computes both the velocity profile and . For example, (1) and (2) express a typical algorithm the for a trapezoidal profile [5].

Manuscript received November 26, 2001; revised October 16, 2002. Recommended by Technical Editor K. Ohnishi. This work was supported in part by the Universidad Nacional de Mar del Plata under Grant ING-15/G064 and in part by the Agencia Nacional de Promocin Cientfica y Tecnolgica under Grant BID 1201/OC-AR 2000. D. Carrica is with the Department of Electronics, National University of Mar del Plata, Mar del Plata, Argentina. He is also with He is also with the Centro Austral de Investigaciones Cientficas (CADIC), Tierra del Fuego, Argentina. M. A. Funes is with the Department of Electronics, National University of Mar del Plata, Mar del Plata, Argentina. S.A. Gonzlez is with the Laboratorio de Instrumentacin y Control, Department of Electronics, National University of Mar del Plata, Mar del Plata Argentina. He is also with the Comision de Investigaciones Cientificas (CIC), Buenos Aires, Argentina (e-mail: sagonzal@ieee.org). Digital Object Identifier 10.1109/TMECH.2003.809160

(1) step (2)

is the resulting speed, is the maximum speed where of the motor, is the total number of steps or microsteps, is is the time the acceleration of the trapezoidal profile and of the -th step.

1083-4435/03$17.00 2003 IEEE

Apndice A. Publicaciones e

176

CARRICA et al.: NOVEL STEPPER MOTOR CONTROLLER BASED ON FPGA HARDWARE

121

Fig. 3. Flow chart of the algorithm.

Fig. 2.

On-line algorithms.

2) Assume (5)

These schemes as well as the off-line ones make use of timers for obtaining the indexed pulses. Since it is necessary one timer per motor, this approach is often discouraged when multiple motors have to be commanded by a single processor. Another important disadvantage is the computing time , required to compute (1). imposes a practical limit to the speed. but the timer resolution, , affect the Moreover, not only maximum speed as in (3) (3) Current timer resolutions are small enough to discard the at the equation. Therefore, (3) turns into (4). (4) Standard algorithms fail to reach high speeds, mainly because the goal is to the computing time, . In order to resolve provide a new algorithm with a more effective step generation procedure without timers. II. PROPOSED ALGORITHM The proposed algorithm can be explained as follows. In order , it is assumed that is times to estimate the time , since it is an accurate way of measuring time without using timers. Therefore, the proposed algorithm has to do the following functions during each iteration: 1) Let

where is a positive integer number. allows the wished 3) Verify if assumed means

. Thus, it

(6) is the reference velocity at the th step. where 4) If the verification is true, then execute the new step/microstep. If not, then increment and repeat the process. (points 2, 3, and 4) (7) is . The From (5) it can be seen that the resolution of equality in (6) is not possible because of this resolution. Equation (6) becomes the comparison stated in (8) (8) Eliminating the division in (8) is mandatory for reducing the iteration time. Therefore a simple contraction as in (9) is preferred (9) The new algorithm is based on (5), (7), and (9). in (5) has the same meaning as in (4), but with a considerable smaller magnitude, since the computations here are very straightforward. It

Apndice A. Publicaciones e

177

122

IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003

Fig. 5. FPGA based control system.

Fig. 4.

Intended velocity profile.

is experimentaly demonstrated that a ten times less than in conventional algorithms is achieved. To conclude, the algorithm consists basically on a periodic accumulative sum until the intended velocity is reached. Fig. 3 shows the flowchart of a system that implements (5), (7) and (9). The velocity profiles block was previously executed. resolution of the new algorithm is since From (5), is 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 characteristics:

Therefore, an algorithm has been developed which requires neither timers nor lookup tables and can work for much higher speeds. Its disadvantage is the quantification effect which depends on the magnitude of . With current DSP technology, a s is obtainable. This magnitude produces minimun a quantification level of 2000 steps at speeds arround 15 000 steps/s, which shows the importance of the problem. III. HARDWARE IMPLEMENTATION In order to reduce the computing time, a hardware implementation is proposed. The algorithm presented in Section II is simple enough to be executed by a custom hardware. Hardware implementation permits multiple parallel tasks, thus, providing an effective way of implementing true parallelism which allows a great reduction of computing time because operations such as the reference profile generation, multipication and indexation can be executed in separate blocks and can run independently ones of the others. Equations (5) and (9) are replaced by (11) . Although, this means no changes in the algorithm, it reduces the pair of multiplications to only one. This fact allows an efficient hardware implementation without performance demerit. Hardware implementation of (5) and (9) is presented in Fig. 5, where the block diagram of the controller is shown. The COUNTER, clock periods, represents the execution of (5). wich counts The hardware implementation of (11) is carried out by the MULTIPLIER and the COMPARATOR (11) When the inequation is satisfied, a new step is commanded. The signal is then fed to the DRIVER INTERFACE, which commands the pulses to the driver of each motor phase. Fig. 5 shows a four phase motor. of hardware implementation is equivaThe clock period lent to the computing time in the software execution of the algorithm of Section II. The clock period defines the time resolution of the controller. As can be well reduced in hardware ap-

. . .

. . .

(10)

As an example, Fig. 4 shows a trapezoidal profile which starts and has a maximum . In order to keep track of the at intended speed (in discontinuous line), the system commands an . This results in an initial speed of initial value of which is the closest possible speed to the intended initial speed, . At , changes to 6. As a consequence a higher speed of occurs. At , produces a commanded speed of . It then follows that at time the commanding speed which equals the intended velocity profile. is The quantification effect is more remarkable at higher speeds times are smaller as . The effect can also be exwhen plained since intermediate speeds cannot take place between and , or between and , nor among and , etc.

Apndice A. Publicaciones e

178

CARRICA et al.: NOVEL STEPPER MOTOR CONTROLLER BASED ON FPGA HARDWARE

123

Fig. 6.

Position and velocity profile with the FPGA based system.

Fig. 7. Velocity profile with the FPGA based system.

proach, the quantizacion effect on the mechanical velocity will be negligible. Standard implementation of a multiplier is accomplish by a combinatorial structure. This approach is very good regarding time because it presents a minimum delay imposed by the the 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 a 10 000 logic gates FPGA [6], [7]. In order to overcome the FPGA area problem, a sequential arquitecture for the multiplier is proposed [8], [9]. This approach allows an effective area reduction of 10 times, but with a greater , i.e., 16 clock pulses for a 16-bit word multiplier. However, with a 40 MHz clock, time is only 400 ns which remains neglicted for system performance. As a consequence, a sequential multiplier was adopted, which permited the implementation of the algorithm in a FPGA of 6000 logic gates. A trapezoidal profile is generated, with several parameters, such as acceleration, minimum and maximum speed, and step quantity. The controller decides how the profile must be based on these parameters, and generates a reference profile to drive the stepper motor. As a conclusion, a new controller based on a novel algorithm implemented by hardware was proposed. The new system provides a good combination to achieve both high speed and high precision motion on a compact hardware. Furthermore, this controller can easily drive full, half and micro-step mode applications due to the flexibility and the reduced computing time with the FPGA implementation. IV. EXPERIMENTAL RESULTS To evaluate the performance of the system, the developed algorithm was implemented in a Xilinx FPGA XC40063. This device can run at synchronous system clock rates up to 80 MHz and has a capacity 6000 logic gates. A hybrid stepping motor was used in the experiments. Motor characteristics: 400 step/rev, 10 N m. No inertial moment 13 10 kg m , aditional load was connected.

The position measures were obtained through an incremental optical encoder ELAP-E521 with a resolution of 1024 pulses/rev whose inertial moment is 10 kg m . It was coupled through an HELICAL-WA25 with an inertial moment 10 kg m . of The position curve was obtained by reading the encoder signal with a high resolution timer. The position was off line derived to obtain the speed profile. The muliplier works with a 40-MHz clock rate, which yield ns was adopted, wich a multiplication time of 400 ns. remains negligible in relation to the motor speed. The stepper motor must develop a 12 000 step displacement following a reference trapezoidal profile with charasteristics: steps s, steps s and a max accelsteps s . eration The resultant speed and position profiles can be seen in Fig. 6. time allows an almost continuous profile and very The low high speeds, higher than those generated by standard software algorithms. Due to the characteristic of the profile, the stepper motor passes through resonance area [5]. This effect can be observed at low speeds in the profiles. Fig. 7 shows a complete profile obtained at high speeds with full step. Note the continuity at all the effective speed range. Fig. 8 shows a complete profile obtained for a microsteping application. The stepper motor used in this experiment was a SLO-SYN KML093F14C5 whose characteristics are: 200 816 N cm and a rotor inertia step/rev, holding torque 3.32 kg cm . The position values were obtained through an optical incremental encoder with a resolution of 500 pulses/rev. The microstep drive module used was an SLO-SYN MD808, configured to produce 2000 pulses/rev. As a consequence, the system must generate a high velocity profile steps s, steps s and a max with steps s . The time adopted for acceleration the application was 400 ns in order to reduce the speed jumps to 1000 steps/s, so the speed jump remains under 5% at . This effect can be observed as a ripple component at of the top of the profile.

Apndice A. Publicaciones e

179

124

IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003

[4] Z. Kang and S. Qu, A new methodology for using single microprocessor to control DC stepper motors, in Proc. IEEE Int. Conf. Industrial Technology, Dec. 1994, pp. 543545. [5] T. Kenjo and A. Sugawara, Stepping motors and their microprocessor controls, in Ser. Monographs in Electrical and Electronic Engineering. 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. Jurez, and J. Meneses, Taxonoma de multiplicadores, in Proc. 8th DCIS Conf., 1993, pp. 185190. [9] J. L. Hennessy and D. Patterson, Computer Architecture: A Quantitative Approach. San Francisco, CA: Morgan Kaufmann, 1996.

Fig. 8.

Velocity profile for microsteping application.

The system achieved very high speed that was unreachable with standard algorithms executed by a processor. Furthermore the new controller does not require the timers, wich are necesary in conventional systems, and the processor was replaced by a FPGA of similar size and equivalent cost. V. CONCLUSION A novel algorithm with reduced quantity of operations was introduced. This algorithm implemented on FPGA allows a substantial decrease of the equivalent processing time developed by classic velocity controllers. As a consecuence, the stepper motor can reach very high speeds never obtained with standard algorithm based systems. Due to the system architecture, one FPGA can drive several stepper motors simultaneously without increasing the procesing time. It can drive three stepper motors with current 6000 gates FPGAs. This advantage make the system very convenient since it allows the increase of the number of motors, simply using a larger FPGA. REFERENCES
[1] B. K. Bose, Ed., Modern Power Electronics. New York: IEEE Press, 1992. [2] J. V. Wyk, H. Skudelny, and A. Mller-Hellmann, Power electronics, control of the electromechanical energy conversion process and some applications, Proc. Inst. Elect. Eng., vol. 133, no. 6, pp. 369399, Nov. 1986. [3] J. Crook, Low cost microprocessor based speed control , in Proc. 13th Annu. Symp. Incremental Motion Control System and Devices, P. B. Kuo, Ed., Champaign, IL, May 1984, pp. 2530.

Daniel Carrica (M84SM00) was born in Dolores, Argentina, in 1958. He received the engineer degree from the National University of Mar del Plata (UNMdP), Mar del Plata, Argentina, in 1984 and the M.Sc. degree in electronics from the Universidad Politcnica de Madrid, Madrid, Spain, in 1992. In 1984, he joined the Department of Electronics, National University of Mar del Plata (UNMdP), as a Research Assistant. From 1990 to 1991, he was an Associate Scientist at the European Organization for Nuclear Research (CERN), Geneva, Switzerland. From 1994 to 1996, he was Head of the Department of Electronics, UNMdP where he is currently an Associate Professor. He is also with the Centro Austral de Investigaciones Cientficas (CADIC), Tierra del Fuego, Argentina. His current research interests include motion control and power electronics. Professor Carrica is a Vice President of the Joint Chapter of Argentina IEEE Section.

Marcos A. Funes was born in Mar del Plata, Argentina in 1974. In 1999, he received his degree in electronic engineering from the Universidad Nacional de Mar del Plata (UNMdP), Argentina and joined the Laboratorio de Instrumentacin y Control, (UNMdP) as research assistant. Since 2000, he is Assistant Professor and is currently working toward his Ph.D degree at UNMdP. His current research interests include high density programmable logic devices and digital signal processing.

Sergio A. Gonzlez (M01) was born in Mar del Plata, Argentina, in 1972. He obtained the electronic engineering degree from the National University of Mar del Plata (UNMdP), Mar del Plata, Argentina, in 1999, where he is currently working toward the Ph.D. degree. Since 1999, he has been an Assistant Professor of control systems at the School of Engineering, UNMdP. Currently, he is a Research Assistant at the Laboratorio de Instrumentacin y Control, UNMdP. His research interests include hardware design, digital signal processing, motion control and electromechanical systems dynamics. Mr. Gonzlez is a Member of the International Federation of Automatic Control.

Apndice A. Publicaciones e

180

IX Reunin de Trabajo en Procesamiento de la Informacin y Control - 12 al 14 de setiembre de 2001 - Santa Fe

  
                 
   
      
  
 
       


          !"#$ 

  %   &'
( )
*+' ,  -./ &'
( *   

        
         
      
                
 
      
   
      
    
    
                   
  !  "  # $  % 
         &    
     ' ' 

 3@ >."#" # +;"#"   ."#" # +;"#"


 +" (   #"  # "#  #  $. #  "#" # +" # +;"#" 
"" +# $   - 3 ""#  #    ) " " #" # +" ##"
+# "%  $", #  +",  , # +" %#"  ( " #+"$" "#"   A" " # +"
'  ! #  %   #, # " +" # "# 2" " "  "  $ +"+""   $"& ## # ",
) (
 ## ( . 
  " +"  +" # " +# # #"   # "B #  &  C" (  $"  " #" +"$" +"  "# #)  ## (  $"## 
  # '" #%  +! # #(  #"  # (  "#  ""
+ ( "  +"#!  "% ) +" " " +.## #  ", 2 "* " #" +"  (  " # " + # +" #&+"  & /" #  "  +   ," " #" # #" #"  $& $ +"  '( #  #' "  #"  #"" #  "& +  & #, #  +", )  $,
" +,
# "  # "" # "$"  "&   +" #"  # #, ( "+ . ( #!  ## # " 
+#" ( "+"  #&

     !"   #"" #  # "" # "$"


 #"#  %&  '( ) "" " *" + "  "  +",    !" # $& , ( #  # #, " #" # +",  #  +,
  $"## ) " # "&
 - # $ " $   +" #  '( )  ""#"  " # #  +",   "#" "%  * # ", # ""  "# ,+"  " "$  #+!"   +& " ." " #   # +"& "
 #  / # " "   "& , # ' #  +", 0 1 # 2""
34567 0"
34547 08$1
9:::7  +" #  #'
 ."#" # +;"#" 0 < "= # >
34497  + & #"
) (   ",  "%#  # +" # "#     ""  " # "& $" "  ' ", +"%
" ( " +# 1 " "" ."#"  $! "%#  +", '
 +#   #' $% ' 0$"##
,
7 & + #"  '" ."
:  %*"  %##" +"  $## " # > # 2
 
) +"   " # 2"& ", - ) ", 02" # >"#!, ",
"" # 2"  5:9?& 7
& 

173

Apndice A. Publicaciones e

181

IX Reunin de Trabajo en Procesamiento de la Informacin y Control - 12 al 14 de setiembre de 2001 - Santa Fe

, " $# +,  "" #  #'   # #, #  +,  #   ."#" # +;"#"  !  "#" # + #  1" #  +"  +"  #" D" # "# @ #"#    A" # +" # "* #" # +"   #" (@  "        037 ''  

 

"  A" # %  # "#" #% @ %#"    ## # #" +"##" +" " "#
 "   " "
&   + # #, # " +" )  +"#" # #"  " # +  - "  +"   0  +  +7 " +## # " +" # +" 2 (   "  " 
$& #"  +.## # #"
 /" # %I   #%  " - # + ( "  "% ) +.## #   ", #  +" ( #  +"#"  #  #+"& $"   +##" # +, "" +"#"  +"+"  2 "+#"  J#"= 46  &  
 +" # 
   
(   +" (  ## (   A  +##" # +, 1 (     # $& " #  
 ;+ 
0# # %
34457
+  !, #  2 #   ## (  $"## 
%.  )"  ## #  ", (     # " 
"#"  +## ;&  #  
 
+# + #    @             0337     03:7

097

    +" " "  

 

0E7

 " $" #  ."#" ' "#" +"@       067

   

0F7

"##"  0F7   067


 "%@      0G7

  , 0G7  +# "%$ (  "  '" #"  $"##  ' 2 #  "  #% #  ) (  ' #& #" +"  +, ##   #, #  +",  , 0G7  +# % #   @ #"#    +  '  # +" ( $;  "# 2" " "
##  $"##  '
  ( + #  "  #% #     "%$ %. (  ## (  $"## #)  +, *"   " # $"## %* #"# " & +" # " +" # "#  ) $#"
 A" # % #  +% ( #  & #"  %. ) #  +" '"  +" ' ##" +"@ +" " "   
      
   057 047
174

      

0H7

    , 0337  #%#"  (    #%  " ," 1  # + "  +##" # +,   , 0337
 ## #  ",  # +"+""   $"& ##  # * 2" *+"
+  $"##  ' #  + 0!#"  "# #  ++7
 /" ;" #   #%  #
 +% #  %  /"  +"&  '#" # "  
+" " (  ) "$ "# . +  #,  - # #  /" #  "
 "#  . # "+, # #"  +"   . # "+,  #",  %  "+" # (  ## (  $"## 
 "#"  " +" # "B #  
"" +# "%$   '-" #  - 9 2" "
" % ' -$" #  +% # ( +  +;"#" " 1%' %#"
) '   "
+" " ( ' ## ) +#  #1#"   ,#" # "#"   )   ", A ' "#  " % " -$"
1%'   % ##   #   +"#"  " +& % # #  %
 +"+" (  +"#" #(  +% ( "
    %
#"#    A" # +% ( "  "& , A  ## 2 (  +"#"  +! # " # #" "#"   
' " #"  %
( #(

Apndice A. Publicaciones e

182

IX Reunin de Trabajo en Procesamiento de la Informacin y Control - 12 al 14 de setiembre de 2001 - Santa Fe


   
       

  

#" # +% # ""


+ #  +"& #" (. "%, # +%  '   "" #" " " #" #  %  "  #"" ( #  "%" # +% # "# " # ## # %
"" +# $   % 3 : 3 9 E F 6 G H 5 4 3: 33 39 3E 3F 36 "%" 9F 39 39 39 5 39 555 55G 5 39 55 5G5 5GG GGGG GGG GG5 G55 G5G GG 2% # "" :::: :::3 ::3: ::33 :3:: :3:3 :33: :333 3::: 3::3 3:3: 3:33 33:: 33:3 333: 3333



    !





 

 9@ #, # A" # +" "  & " #  $"##  "-, "#    # #+"& $" "#" 2" " "  +"#" #%' 
-
 +% #    %   - E    #  %"( #  +"+"  " #   %  #  2
(  ! + +" " #" ) 1& %"  " '-  "#" # #    %   ( +  ."#" # +;"#"
&  (  #" # ""   # (  # $" +" # "#
 "#" # "& #"  #"   " # #+!"  #"#-#" # 1" # +% # " % ##
 #  /" #  +% A  
 "%" #    )  %
+ (  ## " " + "  % ;  " # "" # 1%, # " & " # '#"  +"#'  #+!" ) " % " -$"
( "  "& , A
 '   #" "
(& ##"   +" " % ##
( ' #1#" #"  $ +% # "# " "%%

% 3@ "" # "+, 2  " ", # #""  "  "%" +"%  +% # 

 )  %
) #"    ; # "## # " +- # $"##  #" ( ) +"%## # "  " &   +% "#  "+" %. " " ( +# "   +"#* #"& ## " " # $"## "  ( # "+, # #"  "   $", #  +",  "    1 " $  +(/" #" (  ! ,"  % # "
 % #& +"%
# " % 
 % " "  +% # #"" ( +  #"#-,
 % #  #, #  ", ) "  A& " % #   " "" ##"
 " # #( $" ""  " '  $;  "" % # #" ) ( #"  +"#! "& +, # #" " 1%' %"   #" # " #%#"  (  $" #  ",  +"#&   $"## %*
+" " ( " #" #" ' #  %  "  +"" ) #"+, # " #"
" " ;#" # %I   +"  +"& #" ) #"   " ++ #  2  +"" # #,  "+ #" " #" #" " ";#" $; " =  +% # #(# ) #   2
" $" #" "  ", "+# # "# ) + +"# !  "+, . " " "
) +"#   +", "  $"##

 E@   %"( #    "     +% #


 %
 # "  " $ +% # & "# "  ", A
)  +% # "" #"
#    %
# +"  "
175

Apndice A. Publicaciones e

183

IX Reunin de Trabajo en Procesamiento de la Informacin y Control - 12 al 14 de setiembre de 2001 - Santa Fe

 " #"+   ", "& )#"  $" " # " #" 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 )  #(&
176

''' "   


 

 F@  # D*" # +"" # #"& +, # #" #" 07 "!  + # "    #"  ( 1  #    " $"  $" "  
"& "     - H  +
" 
 #$" ' # " )
 !" ""
 +", # #" "# # "   '  +-# #  
 #,  +;"#" # " +" "  "#" $ #"      ) "  " #  #, #  
" (  ; +"+" #    #/,  +,   ( + # # " "&  $", #' #  +", # '( "$
!#" "" #"  "# ,+" )  2 + +" ) $! " #" #"   # #, #  +& , )  $"##  +"%    !, ') %   

Apndice A. Publicaciones e

184

IX Reunin de Trabajo en Procesamiento de la Informacin y Control - 12 al 14 de setiembre de 2001 - Santa Fe



( )*

" !



 6@  # #, #  . # "+, # #"  +"  ( " # 1 " $  +## # " #  "   !# "" %I ) " (" # " # 1"  " ; (   %* +" +" %*"   "+$" +" J#"= 46 #"#  +" #   ) # )  # # +,  2 #% !  "   #" + % +" #%*" #  +  " # $"## #  '( "$    + )  + #"  "# #  ++ "*+*"*,%'- "
 L  "  <1 2 "  1" =1  >"""M ... /&      '        ' 
./ 012
33:FN33:H 034547



07

#$ %&'!



( )*


" !

0%7

 #$ %&'!

#
 #   % L"=&) > " =  I&1&1 + )& M  L2"# " 1 " "& + > " 
M ++ 3EHN3F3 "&  "+ > ""
 "
 " 034457 8$1
  L+"$#  1" J1 ## $) " " "#)M ... /  -   
.
 
34 032
54:N54H 09:::7

 G@ >#" # +;"#"

  
    
  

< "=
  # > > L) " "1 " C") " "  2"" $  M ... /     
.
 
.5 062
33N34 034497

1
>  #  2"" L+ "# &   "  +# # 2"" "" # ) "#"M   0 %,,
    
0  
++ 3HGN35: 034567

+ ,- ./0





 #$ %&'!







 H@ " $" #  #"

177

Apndice B e Hardware para el prototipo experimental


Se desarrollo un prototipo experimental donde se probaron las distintas tcnie cas tanto para DSP como para FPGA. El sistema utilizado en las pruebas diseado DSP y FPGA es parte del sistema de supervisin de fallas (ESDF) aplin o cadas al control de posicin de un acelerador de part o culas (CLIC). El mismo fue desarrollado entre 1998 y 1999 para el CERN. Se utiliz este sistema como o plataforma ya que conven su utilizacin para la experimentacin debido a que a o o tenia la tecnolog requerida. Adems de esto, al haber desarrollado totalmente a a el hardware se contaba con toda la informacin necesaria para modicarlo en o funcin a los requerimientos. De manera de poder explicar los cambios hechos o y los algoritmos utilizados se presenta el marco del proyecto CLIC en el que el hardware funciona.

185

Apndice B. Hardware para el prototipo experimental e

186

B.1.

Proyecto CLIC

El CLIC (Compact Linear Collider ) es un acelerador lineal de ultima tecno log que actualmente se encuentra en etapa de investigacin en el CERN (Orgaa o nizacin Europea de Investigacin Nuclear). Se prev la nalizacin completa de o o e o su construccin en el ao 2010, cuando se constituir en el acelerador de mayor o n a energ del mundo. La principal ventaja del CLIC es la concentracin del haz de a o part culas en una seccin mucho ms reducida que en otros aceleradores (Boso a sart et al., 1994). Esto permite obtener part culas de mayor energ Pero como a. contrapartida existen serias exigencias en cuanto a la alineacin del acelerador o respecto de su haz de part culas ya que se especica una desviacin mxima de o a 10 micrones a lo largo de los 4000 m de longitud del acelerador (Coosemans and Mainaud, 1997). Para lograr tal especicacin es necesario un sistema de control o de posicin capaz de compensar perturbaciones con frecuencias da hasta 1Hz o (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 alineacin del o CTF2 se fundamenta en un conjunto de sensores que detectan la posicin de o las cavidades del haz. Luego de un adecuado procesamiento de la informacin se o obtiene el movimiento que se debe operar sobre los elementos del acelerador a travs de un conjunto de motores paso a paso (Carrica et al., 1999). e En la Fig. B.1 se muestra el sistema de control de alineacin del CTF2. o Se observan tres bloques funcionales que estn conectados a su vez a un sistea ma ms jerrquico a travs de un bus standard VME: a) Subsistema de Control, a a e b) Subsistema de Adquisicin, c) Subsistema de Accionamiento. o La electrnica de alineacin del CTF2 incluye 34 placas. Este conjunto se o o encarga de adquirir y procesar 134 seales y de accionar 70 motores paso a paso n

Apndice B. Hardware para el prototipo experimental e

187

aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaa VME BUS aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaa


Subsistema de accionamiento Subsistema de control Subsistema de adquisicin

Figura B.1: Diagrama funcional del sistema de alineacin. o utilizando perles de velocidad (Carrica et al., 1999). La elevada cantidad de motores, sensores y placas elctricas involucradas en e el CTF2 se multiplicar 700 veces en la versin denitiva del acelerador. Adems, a o a como consecuencia de la cantidad de motores y sensores involucrados, existir una a gran cantidad de cables y conexiones. Todo esto traer aparejado dicultades en a la instalacin, mantenimiento y reparacin del sistema. o o A n de reducir tales dicultades se propuso la utilizacin de una Estacin de o o Supervision y Deteccin de Fallas (ESDF) capaz de vericar en forma local el funo cionamiento de los distintos componentes del CLIC, sean estos sensores, motores o las distintas placas electrnicas que existen en el Subsistema de accionamiento o y el Subsistema de adquisicin. o

B.2.

Desarrollo de una ESDF exible

Se propuso una ESDF exible, modular y amigable, basada en PC. La ESDF consta adems de una interfase PC-Subsistemas que funciona como nodo de coa municacin y como unidad de procesamiento rpida. En la Fig. 2 se muestra su o a arquitectura general.

Apndice B. Hardware para el prototipo experimental e

188

Subsistema de accionamiento

aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa PC aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa Interfaz PCaaaaaaaaaa subsistema aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa

Subsistema de adquisicin

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 est basado en un DSP. El mismo se comunica con la PC a travs a e del puerto serie RS-232. Para realizar la comunicacin con la PC se utiliza prio meramente una conversion de niveles que, a partir de los +/-12V del estndar a RS-232, obtiene los niveles TTL utilizados por el sistema. Luego existe el mdulo o de transformacin de la comunicacin serie sincrnica RS-232 a una comunicacin o o o o paralelo de 16 l neas de datos. Los datos transformados son almacenados en un registro accesible desde el DSP. El DSP tambin se comunica en forma serie pero a travs de bra optica con los e e Subsistemas de Adquisicin y Accionamiento. La comunicacin serie con ambos o o subsistieras involucra un bloque de conversin de formatos, tanto para transmisin o o como para recepcin as como un multiplexado de las l o neas de comunicacin o serie dado que el DSP posee un slo puerto serial. Finalmente existen bloques de o transformacin de seales elctricas en pticas para la transmisin y pticas en o n e o o o elctricas para la recepcin. e o

Apndice B. Hardware para el prototipo experimental e

189

Transceiver TTL 12

FO FO

FO FO

aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa FPGA aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa RS-232 aaaaaaaaaaaaaaa Paralelo aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa Transmisor aaaaaaaaaaaaaaa Serie aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa Transmisor aaaaaaaaaaaaaaa Serie aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa

EEPROM

DSP

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 correspondientes comandos o funciones. La mayor de las funciones involucran adquisicin de a o sensores y o movimiento de motores. Gracias al uso del DSP, la ESDF posee una velocidad de procesamiento sucientemente rpida que hace posible el accionaa miento simultneo de los 70 motores como as tambin la adquisicin de los 134 a e o sensores. A n de obtener un sistema modular, compacto, exible y programable se ha utilizado tecnolog FPGA (Field Programmable Gate Array). Todos los bloque a funcionales mencionados, excepto el convertidor de niveles +/-12V a TTL y los convertidores de seales pticas en elctricas, son implementados en una FPGA n o e XC4006E de XILINX. En cuanto al DSP se utiliza el TMS320C31 de TEXAS que es de punto otante de 24-bits de palabra y 50 ns de tiempo de procesamiento por instruccin. o

Apndice B. Hardware para el prototipo experimental e

190

En la Fig. B.4 se observa el circuito impreso (PCB, Printed Circuit Board ) de la interfase PC-Sistemas de la ESDF.

Apndice B. Hardware para el prototipo experimental e

191

Conectores de Fibra ptica para comunicacin serie con sub-sistema de accionamiento

Conectores de Fibra ptica para comunicacin serie con sub-sistema de adquisicin

FPGA

DSP

Conector DB-25 para comunicacin serie RS-232

Figura B.4: PCB de la ESDF.

Apndice B. Hardware para el prototipo experimental e

192

B.3.

Conclusiones

Se lograron las siguientes caracter sticas de la ESDF: Comunicacin a travs de bra ptica con los sistemas de adquisicin de o e o o sensores y de accionamiento de motores. Acceso a un grupo de sensores de hasta 32 grupos de 20 canales, es decir 640 sensores. Parametrizacin de los perles trapezoidales de velocidad de los accionao mientos. Accionamiento de un motor o de un grupo de 6 motores seleccionado entre 32 grupos, es decir 192 motores. El accionamiento puede denirse en micrones o en pasos, en ambos sentidos. O hasta l mites de n de carrera o hasta el cero mecnico. Las velocidades logradas son de hasta 10000 pasos/s a sin prdida de pasos gracias a la aplicacin de algoritmos ecientes para la e o generacin de perles de velocidad de velocidad. o Accionamiento de un motor o de un grupo de 6 motores seleccionado entre 32 grupos, es decir 192 motores. El accionamiento puede denirse en micrones o en pasos, en ambos sentidos. O hasta limites de n de carrera o hasta el cero mecnico. Las velocidades logradas son de hasta 10000 pasos/s a sin prdida de pasos gracias a la aplicacin de algoritmos ecientes para la e o generacin de perles de velocidad de velocidad. o Lectura del estado de cualquier motor. Comunicacin con la PC mediante el port serie con velocidad de transmisin o o de datos seleccionable entre 9600, 19.200, 38.400 o 115.200 baudios.

Apndice B. Hardware para el prototipo experimental e

193

Implementacin del hardware mediante FPGA (Field Programmable Gate o Array). Utilizacin de tecnolog DSP a n de ejecutar el procesamiento matemtico o a a en tiempo real, as como la decodicacin de las instrucciones y datos que o imponen una exigente velocidad.

Apndice B. Hardware para el prototipo experimental e

194

Referencias
Bossart, R., Braun, H., Chautard, F., Comunian, M., Delahaye, J., J.C.Godot, Kamber, I., Madsen, J., Rinol, L., Schreiber, S., Suberlucq, G., Wilson, I., and Wuensch, W. (1994). Performances obtained with the cern linear collider test facility. In Proc. European Particle Accelerator Conference-EPAC94, pages 680682, London, UK. Carrica, D. O., Benedetti, M., and Gonnet, G. (1999). Electrnica de alta pero formance para el control de alineacin de un acelerador lineal de part o culas. In ANALES VIII Reunin de Trabajo en Procesamiento de la Informacin y o o Control, RPIC99, volume 1, pages 5764, Mar del Plata, Argentina. Coosemans, W. and Mainaud, H. (1997). Pre-alignment of clic using the doublewire method. Technical Report 343, European Organization of Nuclear Research (CERN). CLIC-NOTE 343. Poirier, P. (1991). Lalignement dynamique submicrometrique de sections acceleratrices. Memoire de soutenance du diplome de recherche specialisee en sciences, Universite Louis Pasteur de Strasbourg.

Apndice C e Software para el prototipo experimental


Existe un problema adicional en la ESDF respecto al control de los accionamientos. La resolucin en el movimiento de los motores es de 0,1 um. Teniendo o en cuenta desplazamientos mximos de 4 mm, esto implica desplazamientos de a hasta 40000 pasos. Dado que los motores paso a paso deben accionarse siguiendo perles de velocidad, la gran cantidad de pasos inhibe la posibilidad de operar con perles (de velocidad) o-line, ya que estos requerir una exagerada cantidad an de memoria. La alternativa de los perles 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 condicin la generacin de perles o o en linea en forma digital se ve perturbada por el tiempo de procesamiento. A n de resolver esta dicultad, el software del DSP fue desarrollado en lenguaje de mquina con el objeto optimizar los tiempos de procesamiento. Adicioa nalmente se utilizaron tcnicas algor e tmicas ms ecientes que las convencionales a a n de reducir an ms los tiempos de procesamiento en la generacin de los u a o perles on-line (Carrica and Gonzlez, 1999). a 195

Apndice C. Software para el prototipo experimental e

196

En funcin a los requerimientos se decidi utilizar el DSP TMS320C31 de o o Texas Instruments. Para comprender los programadas implementados y los diagramas de ujo de los mismos es necesario hacer una introduccin previa al DSP o utilizado.

C.1.

Caracter sticas del DSP TMS320C31

El DSP TMS320C31 es un procesador digital de seales de 32 bits de punto n otante para aplicaciones de propsito general. Este DSP tiene 32-bits en el bus o 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-instruccin de 40 nanosegundos y una o 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 mltiples motores se decidi proveer a la placa de una u o FPGA. El C31 tiene la misma velocidad en el CPU que todos los otros miembros de la generacin, pero tiene la diferencia que ofrece un conjunto diferente de o perifricos que le permiten tener una excelente relacin precio/desempeo. El e o n C31 ofrece un menor costo que el C30 removiendo el bus de expansin y uno de o 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 seleccin. Otras caracter o sticas importantes del TMS320C31, son las siguientes (Texas Instruments, 1997): Tiene tiempos de ciclo-instruccin de 50, 40 y hasta 33 nanosegundos. o Tiene un mapa de 16 Megawords para direccionamiento externo. Tiene una boot ROM interna.

Apndice C. Software para el prototipo experimental e

197

Posee DMA(Direct Memory Address) internamente. Soporta operaciones de multiplicacin y acumulacin en el mismo ciclo. o o 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 gura C.1. La CPU consta de los siguientes componentes: multiplicador de enteros/punto otante, ALU, shifter barrer de 32 bit (usado para desplazamientos de hasta 32 bits en un ciclo simple de mquina), buses internos, a registros auxiliares de las unidades aritmticas y el CPU le register que es un e conjunto de 28 registros de propsito general que pueden ser usados tanto por o el multiplicador como por la ALU. Adems el DSP posee una cache de prograa ma, memorias internas de acceso dual, un canal DMA que soporta entrada/salida concurrente y un ciclo de mquina corto. Una tabla con todos los registros que a este DSP contiene puede verse en C.1 (Texas Instruments, 1986). El TMS320C3X puede ejecutar en paralelo operaciones de multiplicacin y o operaciones de la ALU en un slo ciclo de mquina, tanto sobre enteros como o a sobre punto otante. Adems, los buses separados de programa, datos y DMA a permiten a los programas realizar en paralelo bsquedas, accesos a datos y acu 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 otante por segundo (MIPFS) y de 30 millones de instrucciones por segundo (MIPS).

Apndice C. Software para el prototipo experimental e

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 estn incluia dos en esos 16 millones. Cada bloque de RAM y ROM es capaz de soportar dos accesos de CPU en un ciclo simple de mquina. a
RAM Block 0 (1K y 32) RAM Block 1 (1K y 32)

Cache (64 y 32)

Boot Loader

322424 PDATA Bus PADDR Bus RDY HOLD HOLDA STRB R/W D31D0 A23A0 DDATA Bus

323232

2424

MUX

DADDR1 Bus DADDR2 Bus DMADATA Bus DMAADDR Bus 32 24 32 24 24 32 24 DMA Controller

MUX

Serial Port 0 Global-Control Register MUX IR PC RESET INT(30) IACK MCBL/MP XF(1,0) V DD (190) V SS (240) CPU1 CPU2 REG1 REG2 Source-Address Register DestinationAddress Register TransferCounter Register 32-Bit Barrel Shifter ALU 40 ExtendedPrecision Registers (R7R0) 40 Serial-Port-Control Register Receive/Transmit (R/X) Timer Register Data-Transmit Register FSX0 DX0 CLKX0 FSR0 DR0 CLKR0

Peripheral Address Bus

CPU1

REG1

REG2

32

32 Multiplier 40 40 40 32

4040

Peripheral Data Bus

Data-Receive Register

Controller

Timer 0 Global-Control Register

X1 X2/CLKIN H1 H3 EMU(30)

40

Timer-Period Register Timer-Counter Register Timer 1

TCLK0

DISP0, IR0, IR1 Global-Control Register ARAU0ARAU1 BK 24 Auxiliary Registers (AR0AR7) 24 Port Control 32 STRB -Control Register Timer-Period Register Timer-Counter Register TCLK1

24 24 32 32 32 32 Other Registers (12)

32

Figura C.1: Diagrama en bloques funcionales del DSP TMS320C3x.

Apndice C. Software para el prototipo experimental e

199

S mbolo del registro Valor (hex) Nombre asignado a la funcin o R0 00 Registro de Precisin-Extendida 0 o 01 Registro de Precisin-Extendida 1 o R1 R2 02 Registro de Precisin-Extendida 2 o 03 Registro de Precisin-Extendida 3 o R3 R4 04 Registro de Precisin-Extendida 4 o 05 Registro de Precisin-Extendida 5 o R5 R6 06 Registro de Precisin-Extendida 6 o R7 07 Registro de Precisin-Extendida 7 o AR0 08 Registro auxiliar 0 AR1 09 Registro auxiliar 1 AR2 0A Registro auxiliar 2 AR3 0B Registro auxiliar 3 AR4 0C Registro auxiliar 4 AR5 0D Registro auxiliar 5 AR6 0E Registro auxiliar 6 AR7 0F Registro auxiliar 7 DP 10 Puntero de la pgina de datos a 11 Registro Indice 0 IR0 IR1 12 Registro Indice 1 BK 13 Registro del tamao del bloque n SP 14 Puntero de la pila del sistema 15 Registro de estado ST IE 16 Habilitacin de la interrupcin de la CPU/DMA o o IF 17 Banderas de las interrupciones de la CPU IOF 18 Banderas del estado de las I/O RS 19 Direccin inicial para la repeticin o o RE 1A Direccin nal para la repeticin o o RC 1B Contador para la repeticin o Tabla C.1: Registros de la CPU.

Apndice C. Software para el prototipo experimental e

200

absf absi addf addf3 addi addi3 and3 andn and ash ash3 andn3 b bu call cmpf cmpf3 cmpi cmpi3 dbu x frieee lbu oat ldf ldfge ldt ldige ldile ldi ldilt ldp load lsh lsh3 mb mb0 mh0 mh1 mpyf mpyf3 mpyi negi mpyi3 negf nop not or or3 pop popf push pushf rcpf reti rets rnd ror rpts rol stf sti stik subf subf3 subi subi3 subrf subri toieee tstb tstb3 xor xor3 Tabla C.2: Instrucciones usadas por el compilador de para los C3x

C.1.1.

Instrucciones del TMS320C3X

El cdigo assembler escrito utiliza muchas de las caracter o sticas propias de este DSP, en especial la capacidad de repetir bloques y procesamiento paralelo de algunas de sus instrucciones. Sin embargo, el cdigo es fcil de leer cuando se o a conocen los mnemnicos de las instrucciones. En la Tabla C.2 se muestra todas o las instrucciones reconocidas que lenguaje ensamblador proporciona y los cdigos o de operacin de los mnemnicos. o o

Apndice C. Software para el prototipo experimental e

201

Descripcin o Reservar el tamao en palabras en la n seccin .bss (datos no-inicializada) o Ensamblar dentro de la seccin .data o (datos inicializados) .sect nombre Ensamblar a una seccin (inicializada) o .text s mbolo Ensamblar a la seccin .text (cdigo o o ejectable) s mbolo .usect nombre, ta- Reservar el numero de palabras en una mao en palabras, [blocking section (no-inicializada) n ag] Tabla C.3: Directivas que denen secciones.

Mnemnico y sintaxis o .bss s mbolo, tamao en pan labras, [blocking ag] .data

C.1.2.

Directivas de compilacin o

Tan importantes como las instrucciones son las directivas de compilacin. Las o mismas instruyen al compilador para producir distintas opciones en el cdigo o nal. Las directivas ms usadas en el cdigo assembler implementado son las de a o seccin. Una seccin es la unidad ms pequea de un archivo objeto. La misma o o a n puede ser un bloque de datos o de cdigo que nalmente ocupar un espacio o a contiguo en la memoria del TMS320C3x/C4x. La Tabla C.3 resume las directivas de seccionamiento o de seccin del cdigo y la Tabla C.4 resume las directivas o o que administran las constantes.

Apndice C. Software para el prototipo experimental e

202

Descripcin o Inicializa una o ms bytes en la a seccin actual o Inicializa una o ms constantes de a .double valor1 [, ... , valorn ] punto-otante de 32-bits de precisin simple o .eld valor [, size in bits] Inicializa un campo de longitud variable .oat valor1 [, ... , valorn ] Inicializa una o ms constantes de a punto-otante de 32-bits de precisin simple o Inicializa una o ms valores de 16a .hword valor1 [, ... , valorn ] bit (mitad-palabra) .ieee valor1 [, ... , valorn ] Inicializa una o ms constantes de a punto-otante IEEE de 32-bits de precisin simple o .int valor1 [, ... , valorn ] Inicializa uno o ms enteros de 16a bit .ldouble valor Inicializa una constante de punto otante de doble precision de 40-bit Initialize en un formato soportado por el compilador .long valor1 [, ... , valorn ] Inicializa uno o ms enteros de 32a bit .soat valor1 [, ... , valorn ] (slo C32) Inicializa una o ms o a constantes de punto-otante de 32-bits de precisin simple o .space size in bits Reserva n bits en la actual seccin; una etiqueta apunta al coo mienzo del espacio reservado .string string1 [, ... , stringn ] Inicializa una o ms cadenas de a texto .word valor1 [, ... , valorn ] Inicializa uno o ms enteros de 16a bit Tabla C.4: Directivas que inicializan constantes tanto de datos como memoria.

Mnemnico y sintaxis o .byte valor1 [, ... , valorn ]

Apndice C. Software para el prototipo experimental e

203

C.2.

El entorno de simulacin o

Se utiliz un simulador del DSP TMS320C3x, el cual permite realizar el deo bugging del cdigo assembler desarrollado para el DSP. El simulador cuenta con o dos ambientes de debugging: un ambiente bsico de propsito general y un ama o biente de comportamiento. El primero permite seguir la ejecucin del programa o 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 ejecucin. El segundo permite recoleco tar estad sticas acerca de la ejecucin del cdigo (proler), como por ejemplo el o o tiempo de ejecucin de una funcin en particular, o de una porcin del programa, o o o la cantidad de veces que es invocada una funcin, la direccin de memoria de o o una l nea en particular, y otros. Esta ultima caracter stica es la que hace posible determinar exactamente el tiempo de ejecucin de cualquier parte del algoritmo o de control.

C.3.

El cdigo fuente o

Se comenz con implementar un control de accionamientos mediante un perl o de velocidad lineal. Luego trabajando sobre el cdigo anterior ya simulado y o depurado, se agregaron los dems perles de velocidad. Aqu se presentar el a a cdigo fuente bsico para un perl de velocidad con aceleracin constante y luego o a o se expondrn los listados con los cdigos de los perles ms complejos. a o a Los comentarios, que en este compilador suceden al carcter de punto y coma, a explican cada l nea de cdigo. Los mismos son redactados en ingls ya que este o e cdigo deb ser compartido con el CERN para su puesta en practica y futura o a modicacin. o

Apndice C. Software para el prototipo experimental e

204

CTest v7.0 - MainLoop


Thursday, June 15, 2006

Initilization software nicializaciones del , memorias Initialization: DP & STACK

Initialization: Primary Bus Initialization: Motor Group Addresses

;RECEPTION FROM UART (from PC)

Start data has arrived? No Yes main

main

;RECEPTION FROM UART (from PC)

comman

EXECUTION OF DECODED COMMAND.

Tx

TRANSMIT DATA-ACKNOWLEDGE TO UART (to PC) (transmits 0xfa which is Dataacknowledge word)

Page 1

Apndice C. Software para el prototipo experimental e

205

Controlador Principal v0.08 - command


Thursday, June 15, 2006

comman

Esto es la rutina principal de atencion de interrupciones. Transmit motor state n to UART Changing of acceleration a of motor group N Changing of Vmin a of motor group N Changing of Vmax a of motor group N Up Motion of motor n (steps)

STATE

ACC

VMIN

VMAX

Uns

IMAX

Changing of Imax motor n

SUP

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 Nmotor group Changing of Imin motor n ACQUISITION OF SENSOR GROUP N Down Motion of motor n (steps) Up Motion of motor n (microns) Down Motion of motor n (microns)

SDOWN

MSn

MSN

IMIN

ACQ

Dns

Unu

Dnu

FF

Free group from Fault

Page 2

Apndice C. Software para el prototipo experimental e

206

Controlador Principal v0.08 - Page-3


Thursday, June 15, 2006

state

m1_1

Initialize Serial Port as Driver compatible. Transmit motor state n to UART Transmit r3 to UART

tx state_e

Page 3

Apndice C. Software para el prototipo experimental e

207

Controlador Principal v0.08 - Profiles


Thursday, June 15, 2006

profiles

spi_m

Initialize Serial port as DSP-Driver compatible Timer initialization. Direction Serial Port as DSP-Driver. Primary Bus Control initialization: 3 WS

SGN(n) is 0 ?

No

Initialize Serial Port as Driver compatible. Transmit motor state n to UART Transmit r3 to UART

Yes

main

left

No VN(n)<VMAX(n)? NOVMAX NAC(n)<NT(n)/2? UP CURRENT

Yes NAC(n)-NT(n)+N1 >= 0 jumps to DOWN (delayed). DOWN

Jumps to CURRENT to set the value of current to be applied

PWAIT CURRENT

CURRENT

Which Mode?

endomove0 n=n+1 endomove AR1 = AR1 +1 (Circular) ;Build the words of sequences and currents to be transmited. synch NTzero Wait state. In order to be sure that Serial Port ;Activity has finished. profile_e end movement? move

Page 4

Apndice C. Software para el prototipo experimental e

208

A continuacin se lista el programa general, originalmente implementado para o 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.

Apndice C. Software para el prototipo experimental e

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.

Apndice C. Software para el prototipo experimental e

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

Apndice C. Software para el prototipo experimental e

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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Apndice C. Software para el prototipo experimental e

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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Apndice C. Software para el prototipo experimental e

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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Apndice C. Software para el prototipo experimental e

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

Apndice C. Software para el prototipo experimental e

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.

Apndice C. Software para el prototipo experimental e

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.

Apndice C. Software para el prototipo experimental e

217

;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

mpyi 30,r2

Apndice C. Software para el prototipo experimental e

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

Apndice C. Software para el prototipo experimental e

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

Apndice C. Software para el prototipo experimental e

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.

Apndice C. Software para el prototipo experimental e

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.

Apndice C. Software para el prototipo experimental e

222

ldi r2,ar1 ldi *ar1,r4 ash 3,r4 or 2,r4 ldi 5,rc addi 12,ar1 rptb m14_1 ash 4,r4 ldi *ar1++,r0 and 0fh,r0 m14_1 or r0,r4 ldi r4,r5 ;Send Ilevel. call PWAIT sti r5,@8048h

;R2-->AR1. ;R4=Address of group N. ;R4 is shifted 3 times to the left. ;R4 contains now m1,m0. ;RC=5, so there will be a repetition of 6 times. ;Loads Imin of motor n and shift 4 bits (6 times) ;n=n+1 ;It is necessary to reset all bits of Imin except ;the four low significative. So the reason of and ;instruction.

;Wait state. In order to be sure that Serial Port ;Activity has finished. ;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 bz pwait0

;two nops are for assuring that the XRDY bit be ;modified after the loading of the DXR. Loop wait0

Apndice C. Software para el prototipo experimental e

223

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

pwait

Apndice C. Software para el prototipo experimental e

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.

Apndice C. Software para el prototipo experimental e

225

ash -4,r1

ldi @N,r2 ash 27,r2 or @Imask,r2 or r2,r1 sti r1,@9de7h ;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 ldi @pointstate,r3 ldi @9f9dh,r2 addi r3,r2 STATESN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;R3=pointer of motor memory. ;loads de number of group motor in R2. ;R2=R2+R3 ==> R2= position of State of ;the group N. ; ;State of group N --> R3

;Shifts to the right for compensating the last ; left shifting. ;N->R2. ; ;Or currents with Imask (which contains the ;mask for good address. ;Stores currents of motors 1 to 6 in CUROUT.

ldi r2,ar3 ldi *ar3,r3 rets ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END STATESN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NOTok1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NOTok1 ldi @notOK,r0 sti r0,@NOTOK

Apndice C. Software para el prototipo experimental e

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.

Apndice C. Software para el prototipo experimental e

227

tstb 80h,r0 bz txa1_l ldi *ar0++,r3 sti r3,*ar7 nop nop nop nop nop nop nop nop nop nop nop nop txa2_l ldi iof,r0 tstb 80h,r0 bz txa2_l ash -8,r3 sti r3,*ar7 nop nop nop nop nop nop nop nop nop nop nop nop nop txa1_e nop trans_e rets

;Sends low byte of acquired word to UART.

;Verifies if acknowledge XF0.

;Sends high byte of acquired word to UART.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 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.

Apndice C. Software para el prototipo experimental e

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 dont 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.

Apndice C. Software para el prototipo experimental e

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

Apndice C. Software para el prototipo experimental e

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).

Apndice C. Software para el prototipo experimental e

231

STI R0,*+AR4(38) ;VN(n)<VMAX(n)? CMPF *+AR4(18),R5 BPD NOVMAX LDI *+AR4(6),R0 LDI *+AR0(6),R1 NOP ;If VMAX-VN(n) > 0 jumps to ;NAC(n)>=NT(n)-N1(n)? SUBI R1,R0 ADDI *+AR4(12),R0 BNND DOWN

;Stores the new SEQ(n) in OUTSEQ(n). ;VMAX-VN(n). ;If VN(n)<VMAX jumps to NOVMAX (delayed). ;Loads NAC(n) in R0. ;Loads NT(n) in R1. ;Waits for the branch to be done. NOVMAX.

;Loads in R0 NAC(n)-NT(n). ;Now R0 contains NAC(n)-NT(n)+UPN(n). ;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

Apndice C. Software para el prototipo experimental e

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

Apndice C. Software para el prototipo experimental e

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

Apndice C. Software para el prototipo experimental e

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 .word .word .word .word

stack mem10302 mem10300 pbcr iof1 pointerPC

809fa1h 10302h 10300h 0bh

.word 0h .word 809f9ch

;Stack pointer. ;Position of the UART (reading) in the FPGA. ;Position of the UART (writing) in the FPGA. ;Primary Bus Control Register: Hold and ;RDY disabled, 3 ws. ;I/O Flags Register: XF0 & XF1 are inputs. ;Pointer of memory block (in the DSP) where ;the read ;bytes are being stored. The word in 809f9c ;is command.

Apndice C. Software para el prototipo experimental e

235

;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. Its ;updated in this routine. .bss pointerSEQ,1 ;pointerSEQ will be used by profiles. Its ;updated in this routine. pSEQ .word 809de8h .bss IlevelV,1 ;IlevelV will be used by profiles. Its ;updated in this routine. .bss MotionV,1 ;MotionV will be used by profiles. Its ;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.

mem10200

.word 10200h

Apndice C. Software para el prototipo experimental e

236

ticon

tiper

sensor0 acq0 rc1 spgc0_ad spgc_ad

mem10204 pbcr1 chiche pointPER poinOUTCUR pointFIL pointSEQ poinSEQOUT poinENDFIL COUNT

notOK

notOK1

notOK2 notOK3 m100000

MSN_to

.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. .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. .word 809e48h ;sensor0: it is the first position of ;sensor memory. .word 809f88h ;acq0: it is the first position of ;acquisition memory. .word 1e8480h .word 10035fh ;Reset of Serial Port. .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. .word 10204h .word 0ebh ; Primary Bus Control Register: Hold and ; RDY disabled, 7 ws. .word 0ffffh .word 809db4h .word 809de0h .word 809bb8h .word 809ddah .word 809de6h .word 809dd9h .word 0h .bss state1,1 ;STATE: here is stored the state which ;has been received from driver. .word 0ddddddh ;For comparing with state1. It is supposed ;that F=1 or SS=0 or SE=0 of each motor ;indicates a problem. .word 555555h ;For comparing with state1. It is supposed ;that F=1 or SS=0 or SE=0 of each motor ;indicates a problem. .word 888888h ;For comparing with state1. It is supposed ;that F=1 of each motor indicates a problem. .word 0h ;For comparing with state1. It is supposed ;that F=1 of each motor indicates a problem. .word 100000 .bss mode,1 .bss NOTOK,1 .bss NOTOK1,1 .bss alarma,1 ;When it is not 0, there is a problem. .word 0c3500h ;Used in move to limits. Time out

Apndice C. Software para el prototipo experimental e

237

;value=800000 ;That is a time out aprox 800000/2Vmax period timer0 timer1 period1 ff .bss MSN_to1,1 .word 268 ;This implies a period x(1/50MHz) = 21us .word 3bfh .word 3ffh .word 20000 ;This implies a 1 ms period (20000*4/40MHz) .word 0ff000000h;For sending all 0s 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 ;SEQ2 SEQ3 ;SEQ4 SEQ5 ;SEQ6 SEQ7 ;SEQ8 SEQ1b SEQ3b SEQ5b SEQ7b .word .word .word .word .word .word .word .word .word .word .word .word 99999999h ; 88888888h ; 0CCCCCCCCh; 44444444h ; 66666666h ; 22222222h ; 33333333h ; 11111111h ; 99999999h ; 0CCCCCCCCh; 66666666h ; 33333333h ; 1001 1000 1100 0100 0110 0010 0011 0001 1001 1100 0110 0011 1001 1000 1100 0100 0110 0010 0011 0001 1001 1100 0110 0011 1001 1000 1100 0100 0110 0010 0011 0001 1001 1100 0110 0011 1001 1000 1100 0100 0110 0010 0011 0001 1001 1100 0110 0011 1001 1000 1100 0100 0110 0010 0011 0001 1001 1100 0110 0011 1001 1000 1100 0100 0110 0010 0011 0001 1001 1100 0110 0011 1001 1000 1100 0100 0110 0010 0011 0001 1001 1100 0110 0011 1001 1000 1100 0100 0110 0010 0011 0001 1001 1100 0110 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 FIL2 FIL3 FIL4 FIL5 FIL6 .word .word .word .word .word .word 00F00000h 000F0000h 0000F000h 00000F00h 000000F0h 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

Apndice C. Software para el prototipo experimental e

238

PSEQ2_0 PSEQ3_0 PSEQ4_0 PSEQ5_0 PSEQ6_0 PSEQ1_1 PSEQ2_1 PSEQ3_1 PSEQ4_1 PSEQ5_1 PSEQ6_1 PSEQ1_2 PSEQ2_2 PSEQ3_2 PSEQ4_2 PSEQ5_2 PSEQ6_2 PSEQ1_3 PSEQ2_3 PSEQ3_3 PSEQ4_3 PSEQ5_3 PSEQ6_3 PSEQ1_4 PSEQ2_4 PSEQ3_4 PSEQ4_4 PSEQ5_4 PSEQ6_4 PSEQ1_5 PSEQ2_5 PSEQ3_5 PSEQ4_5 PSEQ5_5 PSEQ6_5 PSEQ1_6 PSEQ2_6 PSEQ3_6 PSEQ4_6 PSEQ5_6 PSEQ6_6 PSEQ1_7 PSEQ2_7 PSEQ3_7 PSEQ4_7 PSEQ5_7

.word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word

809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h

Apndice C. Software para el prototipo experimental e

239

PSEQ6_7 PSEQ1_8 PSEQ2_8 PSEQ3_8 PSEQ4_8 PSEQ5_8 PSEQ6_8 PSEQ1_9 PSEQ2_9 PSEQ3_9 PSEQ4_9 PSEQ5_9 PSEQ6_9 PSEQ1_10 PSEQ2_10 PSEQ3_10 PSEQ4_10 PSEQ5_10 PSEQ6_10 PSEQ1_11 PSEQ2_11 PSEQ3_11 PSEQ4_11 PSEQ5_11 PSEQ6_11 PSEQ1_12 PSEQ2_12 PSEQ3_12 PSEQ4_12 PSEQ5_12 PSEQ6_12 PSEQ1_13 PSEQ2_13 PSEQ3_13 PSEQ4_13 PSEQ5_13 PSEQ6_13 PSEQ1_14 PSEQ2_14 PSEQ3_14 PSEQ4_14 PSEQ5_14 PSEQ6_14 PSEQ1_15 PSEQ2_15

.word 809bb0h .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h 809bb0h

.word 809bb0h .word 809bb0h

Apndice C. Software para el prototipo experimental e

240

PSEQ3_15 PSEQ4_15 PSEQ5_15 PSEQ6_15 .end

.word .word .word .word

809bb0h 809bb0h 809bb0h 809bb0h

Una vez depurado el programa se inici con la etapa de pruebas de los perles o con aceleraciones no-constantes. A continuacin se listan las rutinas necesarias o para el accionamiento con otros perles de velocidad. Las mismas deben ser agregadas al listado original, anteriormente presentado. Para el accionamiento con un perl con curva-S se agrega la rutina de inicializacin PROFINI y la rutina Prole cambian algunos detalles. As mismo, se o incorporan otras rutinas como INVF que realizacin operaciones matemticas o a como la inversa de un numero en coma otante.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 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 ;C7*(e) ldf @9dd2h, r0 mpyf @9bc9h, r0 stf r0, @9dd4h

; nuevo A*e

; nuevo e

Apndice C. Software para el prototipo experimental e

241

;C4 = -32*(A*e)*e/T^2 ldf @9dd3h, r7 mpyf -32.0, r7 mpyf @9dd4h, r7 stf r7, @9dcdh

;*+ar0(4) ;*+ar0(5) ;*+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 mpyf 32.0, r7 mpyf @9dd4h, r7 stf r7, @9dceh

;*+ar0(4) ;*+ar0(5) ;*+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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Apndice C. Software para el prototipo experimental e

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

Apndice C. Software para el prototipo experimental e

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.

Apndice C. Software para el prototipo experimental e

244

ENDIV

;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. 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.

Apndice C. Software para el prototipo experimental e

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

Apndice C. Software para el prototipo experimental e

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 aceleracin, DOWN o 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)

Apndice C. Software para el prototipo experimental e

247

; C6 *+AR5(27) ; a(k-1) *+AR5(29) ; 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 aceleracin, UP o UP PUSHF R7 LDF @9dcdh, R7 float @9dd0h, R6 MPYF R7, R6 ADDF @9dcch, R6 ADDF @9dd1h, R6 STF R6, @9dd1h mpyf @9bc9h, 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

ADDF @9dcfh, R6 ADDF @9dd1h, R6 STF R6, @9dd1h

; LDF ; ; ; ; ; ; ;

*+AR5(25), R7

C4*k MPYF *+AR5(28), R7 C3 ADDF *+AR5(24), R7 a(k-1) *+AR5(29), R7 guardo la aceleracion actual para la prxima iteracin o o multiplico por e mpyf *+AR4(), R6, y entrego la aceleracion en R6

Apndice C. Software para el prototipo experimental e

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

Apndice C. Software para el prototipo experimental e

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

Apndice C. Software para el prototipo experimental e

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 ;

Apndice C. Software para el prototipo experimental e

251

ENDMOVE3

STF R1,*AR4 ; ;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 perl de velocidad parablico slo debe intero o cambiarse la rutina de inicializacin PROFINI con respecto al listado anterior. o

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 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 ;C7*(e) ldf @9dd2h, r0 mpyf @9bc9h, r0 stf r0, @9dd4h ;C4 = -32*(A*e)*e/T^2 ldf 0.0, r7 stf r7, @9dcdh

; nuevo A*e

; nuevo e

;*+ar0(4) ;*+ar5(25)

Apndice C. Software para el prototipo experimental e

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 stf r7, @9dceh

;*+ar0(4) ;*+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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Apndice C. Software para el prototipo experimental e

253

Referencias
Carrica, D. O. and Gonzlez, S. A. (1999). Algoritmo eciente para la generacin a o de perles de velocidad en el accionamiento simultneo de mltiples motores a u paso a paso. In ANALES VIII Reunin de Trabajo en Procesamiento de la o Informacin y Control, RPIC99, volume 1, pages 118122, Mar del Plata, o Argentina. Facultad de Ingenieria, U.N.M.d.P. Texas Instruments (1986). Digital signal processing applications with the TMS320 family. Texas Instruments (1997). TMS320C3x users guide. SPRU031E revision L 2558539-9761.

Apndice D e Desarrollos en FPGA


A continuacin se presentan los esquemticos asociados al nuevo algoritmo o a implementado en hardware. Para este caso se us la FPGA del fabricante Xilinx o XC4006-3 y el entorno integrado de diseo para la misma es el Xilinx Foundation n Series 3.19i.

254

Apndice D. Desarrollos en FPGA e

1 H15 H
VEL14 VEL13 VEL12 VEL11

2 H10
VEL14 VEL13 VMAX[15:0] VEL12 VMIN[15:0] VEL11 P15 P14 P13 NTOT[15:0]

PERFGENB
VMIN[15:0] VMAX[15:0] NTOT[15:0] GND,NTOT[15:1]
LE VMIN[15:0] FIN VMAX[15:0] NTOT[15:0] ND2[15:0] LE CLK1 M4_1E CLKDIV13 CLKDIV12 CLKDIV11 CLKDIV10 D0 D1 O D2 D3 S0 S1 CLR CLR CLR CLR1 STEPCLK CLK2 PERF[15:0] FIN INV NFIN

H
VCC

VCC

P15 P14 P13 ACEL0 ACEL1 CLK

GND

PGEN[15:0]
GND

PARAMETER

CLR

INPUTS

E
CLK

H8
VCC

VCC

E X[15:0] PO[31:0]

E
CB16CE

V[31:0]

SCE CLKDIV[15:0] CLK CE2 LE LE

CLKDIV[15:0]
CE CLKDIV4 STEPCLK C

Q[15:0] CEO TC CLR CLKDIV4 CLKDIV3

N[15:0]
CLK

Y[15:0] CLK

CLR

CLR

INIT

RESET NOR2B1

C V[31:16] V[15:8]

H5
V[31:16] CMP V[15:8]

NFIN CMP CLK CLKDIV3

H14
CMP CLK

NFIN STEPCLK STEPCLK NFIN FIN CLR

H13
STEPCLK NFIN FIN D A B C

H3
A B C D

CLKDIV3

COMP24 B

CLR

B INDEXER CONFORMADOR OUTPUTS

Xilinx Corporation A 2100 Logic Drive San Jose, CA 95124 Date Last Modified: 6/5/00

Project: PERFIL2K Macro: STEPGENF Date: 6/1/00 A

255

Apndice D. Desarrollos en FPGA e

H
COMP16

PERF[15:0]

VMIN[15:0]

A[15:0]

EQ

PERF[15:0] G

FIN B[15:0] AND2

AND2

BGA

F VMIN[15:0]

CB16CLED

COMPMC16

D[15:0]

Q[15:0]

PERF[15:0]

F
GT

A[15:0]

UP L CE C CLR CLR XOR2 FIN CEO TC B[15:0]

LT NOR2

LE

CLK1

E
AND2 OR2

CE2

VMAX[15:0]
AND2 VCC

D NTOT[15:0]
CI A[15:0] CB16CE Q[15:0] CE C CLR LT CLR1 B[15:0] GND NOR2 CEO TC B[15:0] OFL CE3 S[15:0] INV COMPM16 CO A[15:0] GT SMID ADSU16

D SU[15:0]

SVMAX[15:0]

ADD

CLK2

STEPCNT[15:0] B
COMPM16

LT

ND2[15:0]
CB16CE VCC Q[15:0]

A[15:0] GT CE3 LT

STEPCNT[15:0]

B[15:0]

NOR2

Xilinx Corporation 2100 Logic Drive San Jose, CA 95124 Date Last Modified: 6/5/00

Project: PROFILE Macro: PERFGENB Date: 6/5/00 A

A
CLK2 CLR1

CE C CLR

CEO TC

256

Apndice D. Desarrollos en FPGA e

H
BUFE16

H GND,GND,GND,GND,GND,GND,GND,VCC,VCC,VCC,VCC,VCC,GND,VCC,GND,GND
VCC E

VMIN[15:0]
BUFE16 E

VCC GND,VEL14,VEL13,VEL12,VEL11,GND,GND,GND,GND,GND,GND,GND,GND,GND,GND,GND

G
BUFE16

VMAX[15:0] NTOT[15:0]

P15,P14,P13,GND,VCC,VCC,VCC,GND,GND,GND,VCC,GND,GND,GND,GND,GND

VCC

VEL11 VEL12 VEL13 VEL14

P13 P14 P15


GND

VCC

GND VCC

Xilinx Corporation A 2100 Logic Drive San Jose, CA 95124 Date Last Modified: 6/5/00

Project: PROFILE Macro: PARAMETER Date: 6/5/00 A

257

Apndice D. Desarrollos en FPGA e

A OBUF

OUTA

OPAD

LOC=P51
OUTB OPAD

B OBUF

LOC=P50
OUTC OPAD

C OBUF

LOC=P49
OUTD OPAD

D OBUF

LOC=P48

Xilinx Corporation A 2100 Logic Drive San Jose, CA 95124 Date Last Modified: 6/5/00

Project: PROFILE Macro: OUTPUTS Date: 6/5/00 A

258

Apndice D. Desarrollos en FPGA e

H
IPAD VX14 IBUF VX13 IBUF VX12 IBUF VX11 IBUF VEL11 VEL12 VEL13 VEL14

H LOC=P23
IPAD

LOC=P24
IPAD

LOC=P25
IPAD

LOC=P26
PASOS15

IPAD

P15 IBUF

LOC=P57
IPAD PASOS14

P14 IBUF

LOC=P27
IPAD PASOS13

P13 IBUF

LOC=P28
IPAD AX0

E
ACEL0 IBUF AX1 IBUF ACEL1

LOC=P20
IPAD

LOC=P19
IPAD CLRIN

D
CLR IBUF ICLK BUFGP INV

LOC=P56
IPAD

CLK

LOC=P13

259

Apndice D. Desarrollos en FPGA e

VCC

G
CB16CE Q[15:0] CE CEO TC CLR
GND

FJKCE

CLKDIV[15:0]

CE2 Q CE2 INV

CLKDIV13

J K LE

CLK

SCE CLKDIV7

CE C CLR

F
CLR CLR

Xilinx Corporation A 2100 Logic Drive San Jose, CA 95124 Date Last Modified: 6/5/00

Project: PERFIL2K Macro: INIT Date: 6/1/00 A

260

Apndice D. Desarrollos en FPGA e

G
CMP NFIN CLK D CE C

FDCE Q STCLK
VCC

FJKC J K Q STEPCLK

CLR CLKDIV3

C CLR

CLR CLR

Xilinx Corporation A 2100 Logic Drive San Jose, CA 95124 Date Last Modified: 6/5/00

Project: PROFILE Macro: INDEXER Date: 6/5/00 A

261

Apndice D. Desarrollos en FPGA e

A1 INV A AND2

G
B1

B XOR2 CB2CLED AND2

F
VCC

D0 D1

Q0 Q1 C1 C

UP GND GND L CE C CLR AND2 CEO TC AND2B2 OR2 D1

AND2

NFIN STEPCLK FIN

E
D AND2

NFIN

Xilinx Corporation A 2100 Logic Drive San Jose, CA 95124 Date Last Modified: 6/5/00

Project: PROFILE Macro: profile1 Date: 6/5/00 A

262

Apndice D. Desarrollos en FPGA e

GND,GND,GND,GND,GND,GND,GND,GND,GND,GND,GND,VCC,GND,GND,VCC,VCC

COMPM16 A[15:0] GT LT

V[31:16]
VCC

B[15:0]

XNOR2

VCC COMPM8 GND

GND,GND,GND,VCC,GND,GND,VCC,GND

A[7:0] GT

OR2 CMP XNOR2 OR2 AND2

LT
GND

V[15:8]

B[7:0]

Xilinx Corporation A 2100 Logic Drive San Jose, CA 95124 Date Last Modified: 6/5/00

Project: PROFILE Macro: COMP24 Date: 6/5/00 A

263

Apndice D. Desarrollos en FPGA e

FDRE I31 CE CLK G P[31:16] D CE C R RESET CI A[15:0] S[15:0] I[30:15] FDRE I27 CE I31 AAA[15:0] CLK RESET D CE C R Y0 M16_1E Y0 Y1 F Y2 Y3 Y4 Y5 Y[15:0] Y6 Y7 Y8 Y9 Y10 Y11 E Y12 Y13 Y14 Y15 C0 C1 C2 C3 CE D0 D1 D2 D3 D4 P[15:0] D5 D6 D7 O D8 FDRE D9 D10 D11 D12 D13 D14 D15 P[31:16] S0 S1 S2 S3 E Y0 I15 CE CLK PO[31:0] D RESET D CE C R RESET FDRE Q CE CLK P15 D CE C DI[15:0] DO[15:0] PO[31:16] I19 CE CLK RESET D CE C R RESET Q P19 I18 CE CLK D CE C Y0 DI[15:0] DO[15:0] PO[15:0] RESET I23 D CE C R FDRE Q P23 I22 CE CLK RESET D CE C RESET Q P27 I26 CE CLK D CE C RESET CLK Q P31 I30 CE D CE C

FDRE Q P30 I29 CE CLK R RESET D CE C

FDRE Q P29 I28 CE CLK R RESET D CE C

FDRE Q P28

GND
16AND
DI[15:0] DO[15:0]

ADD16

R G

FDRE Q P26 I25 CE CLK R RESET D CE C

FDRE Q P25 I24 CE CLK R RESET D CE C

FDRE Q P24

B[15:0] CO

OFL

X[15:0]

FDRE Q P22 I21 CE R CLK RESET D CE C

FDRE Q P21 I20 CE R CLK RESET D CE C

FDRE Q F P20

16AND

CE CLK

FDRE Q P18 I17 CE CLK R RESET D CE C

FDRE Q P17 I16 CE CLK R RESET D CE C

FDRE Q P16

16AND

FDRE Q CE CLK R RESET P14 D CE C

FDRE Q CE CLK R RESET P13 D CE C

FDRE Q P12

R D

CB4RE Q0 Q1 Q2 Q3 CE CLK RESET C CE C R CEO TC TC J K FJKRSE S RESET CE CLK D CE C

FDRE Q CE CLK R RESET P11 D CE C

FDRE Q CE CLK R RESET P10 D CE C

FDRE Q CE CLK R RESET P9 D CE C

FDRE Q P8

FDRE Q D Q CE CLK R RESET CE C P7 D CE C

FDRE Q CE CLK R RESET P6 D CE C

FDRE Q CE CLK R RESET P5 D CE C

FDRE Q P4 C

VCC
VCC

GND
VCC CLK RESET

CE CE C R CLK RESET R

FDRE D CE CLK B RESET INV RESET CE C R Q CE CLK P3 D CE C

FDRE Q CE CLK R RESET P2 D CE C

FDRE Q CE CLK R RESET P1 D CE C

FDRE Q P0

R B

264

Apndice E e Hojas de Datos


A continuacin se presentan las hojas de datos de los diferentes motores y o encoders pticos utilizados en las pruebas del sistema propuesto. Tambin se o e encuentran las hojas de datos del driver micropaso utilizado, el MD808, el cual est espec a camente diseado para para los motores serie KM09 utilizados. As con mo tambin el encoder ptico adosado a la estructura del motor. Las hojas de e o 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 ptico de precisin usado en algunas de la pruebas o o iniciales, el E520/521, las hojas de datos fueron obtenidas directamente del fabricante, ELAP S.p.A., Corsico, Italia. http://www.elap.it/

265

Apndice E. Hojas de Datos e

266

STEP MOTORS

KM09

High Torque 90mm Frame Size (NEMA Size 34)


Performance Envelope
(see page 13 for detailed torque-speed curves)

www.DanaherMotion.com 704-588-5693

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

Motor Frame

Minimum Holding Torque Unipolar Bipolar 2 on 2 on oz-in oz-in (N-cm) (N-cm)


305 (215) 610 (431) 915 (646) 385 (272) 770 (544) 1155 (816)

Rotor Inertia oz-in-s2 (kg-cm2)


.016 (1.13) .031 (2.19) .047 (3.32)

*Weight Net lb (kg)


3.8 (1.73) 6.2 (2.82) 8.7 (3.95)

Maximum Shaft Load Ship lb (kg)


4.0 (1.81) 6.4 (2.90) 8.9 (4.03)

Overhang lb (kg)
25 (11) 25 (11) 25 (11)

Thrust lb (kg)
50 (23) 50 (23) 50 (23)

Minimum Residual Torque oz-in (N-cm)


10 (7.1) 15 (11) 23 (16)

KMO91 KMO92

10

KMO93

* Weight for motor with leads.

Apndice E. Hojas de Datos e

267

STEP MOTORS

KM09

KM
L leads T terminal box

09
1 single stack 2 double stack 3 triple stack F S Connections four leads six leads XX total current E C2 C4 C5 C12 Rear shaft extension 200 line, six output encoder 400 line, six output encoder 500 line, six output encoder 1250 line, six output encoder

See next page for additional KM09 information


4-CONNECTION STEP MOTORS
Model Number See Next page for options KM 091F05 KM 091F07 KM 091F13 KM 092F07 KM 092F13 KM 093F07 KM 093F08 KM 093F10 KM 093F14 Voltage (VDC) 3.0 2.5 1.3 3.5 1.7 4.9 4.0 3.2 2.5 Winding Specifications Current (amperes) Resistance (ohms) 2.7 1.1 3.3 0.76 6.6 0.19 3.3 1.1 6.5 0.27 3.4 1.4 4.0 0.99 5.1 0.63 6.8 0.36 Inductance (mH) 11 7.5 1.9 11 2.9 18 13 8.3 4.5

6-CONNECTION STEP MOTORS


Model Number See Next page for options KM 091S02 KM 091S06 KM 091S08 KM 091S09 KM 092S09 KM 093S07 KM 093S10 Voltage (VDC) 9.3 2.9 2.1 1.8 2.5 4.4 3.5 Winding Specifications Unipolar Current Resistance (amperes) (ohms) 1.0 9.3 3.1 0.94 3.8 0.55 4.7 0.38 4.6 0.54 3.5 1.3 4.8 0.72 Inductance (mH) 47 4.7 2.9 1.9 2.8 8.3 4.5 Voltage (VDC) 13 4.1 2.9 2.5 3.4 6.2 4.8 Bipolar Series Current Resistance (amperes) (ohms) 0.70 19 2.2 1.9 2.7 1.1 3.3 0.76 3.2 1.1 2.5 2.5 3.4 1.4 Inductance (mH) 190 19 11 7.5 11 3.3 18

11

www.DanaherMotion.com 704-588-5693

Apndice E. Hojas de Datos e

268

STEP MOTORS

KM09: Motor Dimensions

Add E to model number for double ended shaft. Example: KML092F07E

Encoder

Add to Model Number:


C2 C4 C5 C12 200 lines per rev. 400 lines per rev. 500 lines per rev. 1250 lines per rev. 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

www.DanaherMotion.com 704-588-5693

C2, C4, C500 Encoders

Outputs:

C12 Encoder

Terminal Box

Change to Model Number:


Example: KMT093S07 (triple stack, terminal box, six leads, 3.5 amp winding)

12

Terminal Box w/Encoder

Change to Model Number:


Example: KMT092F07C12 (double stack, terminal box, four leads, 3.3 amp winding, C12 encoder)

Apndice E. Hojas de Datos e

269

STEP MOTORS

KM09
36 V Bipolar - Full Step
36 volt data measured with the SS2000MD4 Modular Drive.

72 V Bipolar - Microstep
72 volt data measured with MD808 Modular Drive

170 V Bipolar - Microstep


170 volt data measured with SS2000D3, D3i, D6, or D6i Packaged Drive

400 350 300 250 200

400

400

247 212 177 141 106 71 35 0

350 300 250 200 150 100 50 0

247 212 177 141 106 71 35 0

350 300 250 200 150 100 50 0

247 212 177 141 106 71 35 0

KM091

150 100 50 0

KM 091F05 - 2.5 A peak KM 091F13 - 3.5 A peak

KM 091F13 - 2.5 A peak

KM 091F07 - 4.0 A peak KM 091F13 - 8.0 A peak

KM 091F13 - 4.0 A peak

KM 091F05 - 3.0 A peak

KM 091F07 - 3.0 A peak

800 700 600 500

800

800

494 424 353 282 212 141 71 0

700 600 500 400 300 200 100 0

494 424 353 282 212 141 71 0

700 600 500 400 300 200 100 0

494 424 353 282 212 141 71 0

KM092

400 300 200 100 0

KM 092F07 - 2.5 A peak KM 092F13 - 2.5 A peak

KM 092F07 - 3.5 A peak KM 092F13 - 3.5 A peak

KM 092F07 - 4.0 A peak KM 092F13 - 8.0 A peak

KM 092F013 - 4.0 A peak

KM 092F07 - 3.0 A peak KM 092F13 - 3.0 A peak

KM 092F07 - 4.0 A peak KM 092F13 - 6.0 A peak

1200 1000 706

1200 1000 706

1200 1000 706

800

565

800

565

800

565

KM093

600

424

600

424

600

424

400

282

400

282

400

282

200

141

200

141

200

141

KM 093F07 - 2.5 A peak KM 093F14 - 3.5 A peak

KM 093F10 - 2.5 A peak

KM 093F07 - 4.0 A peak KM 093F14 - 8.0 A peak

KM 093F10 - 7.0 A peak

KM 093F07 - 3.0 A peak KM 093F14 - 3.0 A peak

KM 093F10 - 6.0 A peak KM 093F14 - 6.0 A peak

13

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 100C.

www.DanaherMotion.com 704-588-5693

Apndice E. Hojas de Datos e

270

STEP MOTORS

KM11

High Torque 170mm Frame Size (NEMA Size 42)


Performance Envelope
(see page 17 for detailed torque-speed curves)
3000 2500 2000 1500

KM113

KM112
1000 500

KM111

www.DanaherMotion.com 704-588-5693

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

Motor Frame

Minimum Holding Torque Unipolar Bipolar 2 on 2 on oz-in (N-cm)


1,030 (730) 1,950 (1,380) 2,650 (1,870)

Rotor Inertia oz-in-s (kg-cm2)


2

*Weight Net lb (kg)


11.0 (5.0) 18.4 (8.3) 25.7 (11.7)

Maximum Shaft Load Ship lb (kg)


12.2 (5.5) 19.6 (8.9) 26.9 (12.2)

Overhang lb (kg)
75 (34.0) 75 (34.0) 75 (34.0)

Thrust lb (kg)
130 (59.0) 160 (72.6) 160 (72.6)

Minimum Residual Torque oz-in (N-cm)


42 (30) 84 (59) 106 (75)

oz-in (N-cm)
1,450 (1,020) 2,750 (1,940) 3,750 (2,650)

KML111 KML112 KML113

0.078 (5.5) 0.155 (10.9) 0.229 (16.2)

* Weight for motor with leads.

14

Apndice E. Hojas de Datos e

271

STEP MOTORS

Encoders
Incremental Rotary Optical Kit Encoders

200, 400, 500 lines per revolution

www.DanaherMotion.com 704-588-5693

NOTE: 1250 lines per revolution

1250 lines per revolution

EK
Encoder Kit

21

25

- 200 Pulses Per Revolution: 200, 400, 500, 1250

2
Number of Outputs 2 = Single-Ended (A, B only) 3 = A, B, & Index 6 = A, B, & Index A, B, & Index (With Differential Line Drivers)

Encoder Body Diameter (2.1 inches)

Shaft Size 25 = 1/4 Inch Diameter 38 = 3/8 Inch Diameter

22

Apndice E. Hojas de Datos e

272

STEP MOTORS

Encoders
SPECIFICATIONS
Weight Moment of Inertia Bearing Life Acceleration Bore size Slew Speed Strain Relief Mounting Holes Perpendicularity (Shaft-to-Mount) Shaft Endplay Shaft Diameter Required Minimum Usable Shaft Length Code Cycles Per Revolution Supply Voltage Output Format Output Format Options Output Type, Less Complements Output Type, With Complements Frequency Response Frequency Modulation Frequency Adulation

200/400/500 LINES PER REV


2.1 ounces 2.6 x 10-4 oz-in-sec2 max 100,000 rad/sec2 0.250 in or 0.375 in 15,000 rpm max Withstands 10 lb pull on cable or wire bundle 2 x #4-40 at 180 on a 1.812 dia bolt circle 0.005 in TIR 0.010 in 0.2495 / 0.2500 in 0.3745 / 0.3750 in 0.056 in

1250 LINES PER REV


6 ounces 5.0 x 10-4 oz-in-sec2 L10 = 2 billion revolutions 100,000 rad/sec2 0.250 in or 0.375 in 7,000 rpm max Withstands 10 lb pull on cable or wire bundle 2 x #4-40 at 180 on a 1.812 dia bolt circle 0.060 in 0.2495 / 0.2500 in 0.3745 / 0.3750 in Minimum Required 0.70 in

MOTOR INTERFACE

MECHANICAL

ELECTRICAL

Incremental Incremental 200, 400, 500, as specified 1250 5 VDC 5 VDC Dual channel quadrature, 45 min. edge separation Dual channel quadrature, 45 min. edge separation Index and complementary ouputs Index and complementary ouputs www.DanaherMotion.com 704-588-5693 Square wave TTL compatible short-circuited protected capable of sinking 10 ma Differential line drivers (26LS31) capable of sinking 20 ma 100 kHz 0.5% max. @ 50 kHz 3.0 arc min. max. (zero runout) -10 C to +80 C (less complements) -10 C to +100 C (with complements) -20 C to +100 C (less complements) -40 C to +100 C (with complements) Unsealed housing, (must be protected from harsh environments) Square wave TTL compatible short-circuited protected capable of sinking 10 ma Differential line drivers (26LS31) capable of sinking 20 ma 100 kHz 1% max. 3.0 arc min. max. (zero runout) 0 C to + 85 C -30 C to +110 C Unsealed housing, (must be protected from harsh environments)

ENVIRONMENTAL

Operation Temperature Storage Temperature Enclosure

23

Apndice E. Hojas de Datos e

273

STEP MOTORS

Application Assistance (Continued) Rotor Inertia


Model KM060 KM061 KM062 KM063 KM091 KM092 KM093 KM111 KM112 KM113 KM172 oz-in-s2 0.0015 0.0034 0.0056 0.0084 0.016 0.031 0.047 0.078 0.155 0.229 0.87 Rotor Inertia lb-cm2 lb-in2 0.109 0.037 0.240 0.082 0.395 0.135 0.593 0.203 1.13 0.386 2.19 0.748 3.32 1.134 5.5 1.882 10.9 3.740 16.2 5.526 61.4 20.993

Length Conversion Factors


A B mm cm m inch feet mm ===== 10 1000 25.4 304.8 cm 0.1 ===== 100 2.54 30.48 m 0.001 0.01 ===== 0.0254 0.3048 inch 0.03937 0.3937 39.37 ===== 12 feet 0.003281 0.03281 3.281 0.08333 =====

Force Conversion Factors


A B g kg oz lb Newton g ===== 1000 28.35 453.6 102 kg 0.001 ===== 0.02835 0.4536 0.102 oz 0.03527 35.27 ===== 16 3.597 lb 0.002205 2.205 0.0625 ===== 0.2248 Newton 0.0098 9.807 0.278 4.448 =====

Density of Materials
Material Acryl Aluminum Bakelite Brass Bronze Copper Glass Iron Iron (cast) Magnesium Nickel Nylon Rubber Steel Teflon Density lb/in3 .0433 .0975 .0469 .3069 .3213 .3213 .0939 .2852 .2635 .0614 .3177 .0412 .0433 .2816 .0794 g/cc 1.199 2.700 1.299 8.498 8.897 8.897 2.600 7.897 7.296 1.700 8.797 1.141 1.199 7.798 2.199 A

Inertia Conversion Factors


B kgm
2

kgm2 ===== 1.00 x 10 -4 2.926 x 10 -4 1.356

kgcm2 1.00 x 10 ===== 2.926 1.356 x 10


4

oz-in-sec2 1.416 x 10 ===== 4.144 x 10 -2 1.920 x 10


2

lb-in2 3.418 x 10
3

lb-in-sec2 8.851

lb-ft-sec2 (slug ft2) 7.376 x 10 1

www.DanaherMotion.com 704-588-5693

kgcm2 oz-in-sec2 lb-in2 lb-in-sec2 lb-ft-sec2 (slug ft2)

1.416 x 10 -2 3.418 x 10 -1 8.851 x 10 -4 7.376 x 10 -5 2.413 x 10 6.250 x 10 -2 5.208 x 10 -3 ===== 4.633 x 10 2.590 x 10 -3 2.158 x 10 -4 ===== 1.200 x 10
1

7.062 x 10 -3 7.061 x 10

1.130 x 10 -1 1.130 x 10 3 1.600 x 10 3.861 x 10 2


4 2 5

8.333 x 10 -2 =====

Torque Conversion Factors


A B N-m N-cm kgm* oz-in lb-ft lb-in N-m ===== 1.000 x 10 -2 9.807 1.356 1.130 x 10
-1

N-cm ===== 9.807 x 102

kgm* 1.020 x 10 -3 =====

oz-in 1.416 1.389 x 103 =====


1

lb-ft

lb-in 8.851 8.680 x 101 1.200 x 101


-2

1.00 x 10 2 1.020 x 10 -1 1.416 x 10 2 7.376 x 10 -1 7.233 =====

Coefficients of Static Friction


Dry Contact Unless Noted Steel on Steel Steel on Steel (lubricated) Aluminum on Steel Copper on Steel Brass on Steel Teflon on Steel 0.58 0.15 0.45 0.22 0.19 0.04

7.376 x 10 -3 8.851 x 10 -2 5.283 x 10-3 6.250 x 10-2 =====

7.062 x 10-3 7.062 x 10-1 7.201 x 10-4 1.130 x 10 1.152 x 10


1 -2

1.356 x 102 1.383 x 10-1 1.920 x 102

1.600 x 10 8.330 x 10

* Also written as kpm, kpcm, and pcm, respectively, to denote the force equivalent of the kg and g mass.

Speed Conversion Factors


A Low 85% 35% 50% rpm rps Rad /sec * step / sec B rpm ===== 60 9.552 0.3 rps 0.01667 ===== 0.1592 0.005 Rad / sec 0.1047 6.283 ===== 0.03142 * step / sec 3.333 200 31.83 =====

Leadscrew Efficiencies
28
Type Ball - Nut Acme with metal nut ** Acme with plastic nut High 95% 55% 85% Median 90% 40% 65%

** Since metallic nuts usually require a viscous lubricant, the coefficient of friction is both speed and temperature dependent.

* Step rates are for 1.8 step motors (200 steps / Rev) Multiply units of "A" by indicated factor to obtain units of "B".

Apndice E. Hojas de Datos e

274

STEP MOTORS

Technical Notes
Characteristics of Superior Electric Step 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 -40C to +65C (-40F to +149F) No brushes, ratchets or detents to wear out Lubricated-for-life ball bearings

Comparison of Servomotors versus Step Motors


Often, 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
www.DanaherMotion 704-588-5693

Construction of Step Motors


A Superior Electricstep 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.

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

29

Apndice E. Hojas de Datos e

275

STEP MOTORS

Technical Notes (Continued) Stepping Techniques


The 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 halfstep methods. Microstepping positions occur between these two angular points in the rotation of the rotor.
www.DanaherMotion.com 704-588-5693

Switching Sequence For Operation From Bipolar Drives


Full-Step (Two-Phase On) Energizing Sequence*
Step 1 2 3 4 1 Phase A +1 +1 -1 -1 +1 B +1 -1 -1 +1 +1

Full-Step (One-Phase On) Energizing Sequence*


Step 1 2 3 4 1 Phase A +1 -1 +1 B -1 +1

Half-Step Phase Energizing Sequence*


Phase A 1 +1 2 +1 3 +1 4 5 -1 6 -1 7 -1 8 1 +1 * Rotation is clockwise as viewed from label end of motor. Step B +1 -1 -1 -1 +1 +1 +1

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.

For counterclockwise rotation, sequence should go from bottom to top of chart.

Switching Sequence For Operation From Unipolar Drives


Four Step Input Sequence (Full-Step Mode)*
Step 1 2 3 4 1 Step 1 2 3 4 5 6 7 8 1 SW1 ON ON OFF OFF ON SW1 ON ON ON OFF OFF OFF OFF OFF ON SW2 OFF OFF ON ON OFF SW2 OFF OFF OFF OFF ON ON ON OFF OFF SW3 ON OFF OFF ON ON SW3 ON OFF OFF OFF OFF OFF ON ON ON SW4 OFF ON ON OFF OFF SW4 OFF OFF ON ON ON OFF OFF OFF OFF

Eight Step Input Sequence (Half-Step Mode)*

30

* Rotation is clockwise as viewed from label end of motor. For counterclockwise


rotation, sequence should go from bottom to top of chart.

Apndice E. Hojas de Datos e

276

STEP MOTORS

Technical Notes (Continued) Torque vs. Speed Characteristics


Many 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. 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 Deviation


When 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 construction of the mechanism of the driven load is essential in order to accurately achieve a true versus theoretical position.

Connection Diagrams
www.DanaherMotion 704-588-5693

31
NOTE: Numbers identify terminal board connections.

Apndice E. Hojas de Datos e

277

STEP MOTORS

Standard Options
Double 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%

www.DanaherMotion.com 704-588-5693

Modifications
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.

32

Apndice E. Hojas de Datos e

278

STEP MOTORS

Definitions
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 motors 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-topeak 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.

33

www.DanaherMotion 704-588-5693

Apndice E. Hojas de Datos e

279

STEP MOTORS

Definitions (Continued)
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.

34

www.DanaherMotion.com 704-588-5693

Apndice E. Hojas de Datos e

280

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 I

= Applied voltage = 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.

35

www.DanaherMotion 704-588-5693

Apndice E. Hojas de Datos e

281

STEP MOTOR DRIVE PRODUCTS

Modular Drives

(Continued) 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.

MD808 and MD808-128

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

Affordable Versatility, with Micro-Stepping, Higher Current, Higher Voltage, Active Stabilization

www.DanaherMotion.com 704-588-5693

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

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

Apndice E. Hojas de Datos e

282

STEP MOTOR DRIVE PRODUCTS

Modular Drives
MD808/MD808-128 Mounting Diagram

(Continued)

Power Input

Systems Data
MOTORS FOR USE WITH THE MD808 AND MD808-128
Motor KML060F05 KML061F05 KML062F07 KML062F13 KML063F07 KML063F13 KML091F07 KML091F13 KML092F13 KML093F10 KML093F14 KML111F09 KML111F11 KML112F10 KML112F16 KML113F10 KML113F16 Resistance (ohms) 0.64 0.85 0.75 0.21 1.00 0.28 0.77 0.19 0.27 0.63 0.36 0.93 0.58 1.00 0.60 1.30 0.50 Inductance (mH) 2.5 4.6 3.4 0.9 6.2 1.5 7.5 1.9 2.9 8.3 4.5 15.8 10.1 22.0 12.8 31.0 11.00 Current Setting (amperes) 3.0 3.0 4.0 8.0 4.0 8.0 4.0 8.0 8.0 7.0 8.0 6.0 7.0 7.0 8.0 8.0 8.0 Power Supply Current

1.0 1.0 1.0 1.5 1.0 2.0 1.5 1.5 2.0 2.0 2.0 1.5 1.8 1.8 2.0 2.0 2.0

2.0 2.0 3.5 4.5 2.0 4.5 4.0 4.0 4.5 4.5 4.5 3.0 3.5 3.5 4.5 4.5 4.5

OPTO Input Optional Wiring

For motor dimensions and torque speed curves, see pages 12 - 15.

Ordering Information
To 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.

www.DanaherMotion.com 704-588-5693

Standstill (amps DC)

Maximum (amps DC)

Apndice E. Hojas de Datos e

283

ELAP
ENCODER ROTATIVI SERIE E520/ 521 ROTARY ENCODERS SERIES E520/ 521
Encoder rotativi, con o senza im pulso di zero, predisposti per m ontaggio di tipo ser vo, com patibili con la serie n o r m al i zzat a i n t er n azi o n al e SI ZE2 3 ; d i s p o n i b i l i an c h e c o 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 circuiteria elettronica estrem am ente com patta si com bina al m eglio con la m eccanica testata ed affidabile, garantendo eccellenti risultati in term ini di precisione e durata Conformi a norme I ncr em ent al r ot ar y encoder s w it h or w it hout zer o pulse, f it t o ser vo- coupling, and com pat ible t o t he int er nat i o n al s t an d ar d i zed s er i es SI ZE2 3 ; a f l an g e t y p e RE0 4 4 4 i s al s o av ai l ab l e ( s er i es RE5 3 0 ) . Th e c o m p ac t elect r onic circuit r y joins per f ect ly w it h t he r eliable and t hor oughly t est ed m echanical const r uct ion, allow ing t o keep a f avour able pr ice/ per f or m ance r elat ion. Com pl yi ng wi th standards

CARATTERISTICHE MECCANICHE E AMBIENTALI MECHANICAL AND ENVIRONMENTAL SPECIFICATIONS


Dimensioni / Dimensions Peso / Weight
Custodia Materiali: Albero Case Materials: Shaft Diametro albero Shaft diameter Giri-minuto Vedi disegno / See the drawing E520 280 g - RE520 320 g - RE530 600 g E520 ABS autoestinguente / RE520/RE530 alluminio Acciaio inox AISI 303 E520 ABS self-extinguishing / RE520/RE530 aluminium Stainless steel AISI 303 6 o 8 o 10 mm / 6 or 8 or 10 mm - RE530 11 mm 6000* continuo / 10000 temporaneo * velocit massima di funzionamento con anello di tenuta IP65 applicato sullalbero: 3000 giri/min 6000 continuous* / 10000 temporary * Max operating speed with IP65 sealing ring applied on the shaft: 3000 rpm 0,8 Ncm 25 g cm 2 80 N assiale / 100 N radiale 80 N axial / 100 N radial 100 m/sec 2 50 G IP 64 (optional IP 65) -10 + 70C -20 80C

ELETTRONICA ELECTRONICS

Open collector - pull-up resistor - push-pull


U1 U2 Uz
Tensione alimentazione Supply 10 24 Vdc 5 Vdc 5%

Revolutions per minute Coppia avviamento / Starting torque Momento di inerzia / Inertia Carico ammesso
Max load Resistenza alle vibrazioni (102000 Hz) Resistance to vibrations (102000 Hz) Resistenza allurto (11 ms) Shock resistance (11 ms) Grado di protezione - Protection degree Temperatura di esercizio Operating temperature Temperatura di immagazzinaggio Stocking temperature

Line driver
U1 U2 Uz U1 U2 Uz
Con schem a collegam enti 1-3-4: segnale U2 in ritardo rispetto al segnale U1 con rotazione in senso orario (vista dallalbero). Con schem a collegam ent i 2: segnale U2 in r it ar do r ispet t o al segnale U1 con rotazione in senso antiorario (vista dallalbero). With connection diagram 1-3-4: signal U2 lags signal U1 with clockwise rotation (seen from the shaft side). W it h connect ion diagr am 2: signal U2 lags signal U1 w it h anticlockwise rotation (seen from the shaft side).

Tensione alimentazione Supply 10 24 Vdc 5 Vdc 5%

CARATTERISTICHE ELETTRICHE E FUNZIONALI ELECTRICAL AND OPERATING SPECIFICATIONS


Codice impulsi / Pulse code Numero impulsi-giro / Pulses-revolution Impulso di zero / Zero reference pulse Segnali di uscita
Output Signals Incrementale / Incremental 2 25000 Un impulso al giro / 1 pulse each revolution

Due onde quadre sfasate di 90 15. Impulso di zero larghezza 90 15 Two square waves 9015 out of phase. Zero pulse 9015 wide Push-pull, line-driver, open collector NPN o PNP, pull-up resistor NPN o PNP. Segnali protetti al corto circuito Push-pull, line-driver, open collector NPN or PNP, pull-up resistor NPN or PNP. Protection against short circuits 1024 Vdc o 5 Vdc5% . Protezione alle inversioni di polarit / 1024 Vdc or 5 Vdc5% . Protection against polarity reversal 3080 mA 100 KHz
02/10

Elettronica di uscita
Electronic output

Alimentazione / Supply Assorbimento / Current consumption Frequenza max / Max frequency Tipi di connessione
Connection outlets

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) 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)

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 : el ap s p a@t i n . i t URL w w w .el ap .i t

Apndice E. Hojas de Datos e

284

COLLEGAMENTI - CONNECTIONS
Open collector - pull-up resistor - push-pull SCHEMA 1 A = Segnale 1 B = Segnale 2 C = Segnale Z (solo per i tipi con impulso di zero) D = + Vdc E = Non collegato F= 0V G = Non collegato SCHEMA 2 A= 0 V B = Non collegato C = Segnale 1 D = Segnale Z (solo per i tipi con impulso di zero) E = Segnale 2 F =+ Vdc G = Non collegato CAVO Bianco = Segnale 1 Verde = Segnale 2 Marrone = Segnale Z
(solo per i tipi con impulso di zero)

Line - driver SCHEMA 3 (senza impulso di zero) A = Segnale 1 B = Segnale 2 C = Segnale 1 D = + Vdc E = Segnale 2 F= 0V G = Non collegato SCHEMA 4 (con impulso di zero) A = Segnale 1 B = Segnale 2 C = Segnale Z D = + Vdc E = + Vdc F= 0V G = Segnale 1 H = Segnale 2 I = Segnale Z J = Non collegato SCHEME 3 (without zero pulse) A = Signal 1 B = Signal 2 C = Signal 1 D = + Vdc E = Signal 2 E= 0V G = Non connected SCHEME 4 (with zero pulse) A = Signal 1 B = Signal 2 C = Signal Z D = + Vdc E = + Vdc F= 0V G = Signal 1 H = Signal 2 I = Signal Z J = Non connected

SCHEME 1 A = Signal 1 B = Signal 2 C = Signal Z (for types with zero pulse only) D = + Vdc E = Non connected E= 0V G = Non connected SCHEME 2 A= 0 V B = Non connected C = Signal 1 D = Signal Z (for types with zero pulse only) E = Signal 2 E = + Vdc G = Non connected CABLE OUTLET White = Signal 1 Green = Signal 2 Brown = Signal Z
(for types with zero pulse only)

Rosso = + Vdc Blu =0V Schermo = Massa

Red Blue Shield

= + Vdc =0V = Earth

COME ORDINARE / ORDERING INFORMATION


E520 500 1024 R 6 PP 2
SCHEMA DI COLLEGAMENTO CONNECTION SCHEME 1 schema 1/scheme1 2 schema 2/scheme 2 3 schema 3/scheme 3 4 schema 4/scheme 4

ELETTRONICA ELECTRONIC DIAMETRO ALBERO SHAFT DIAMETER 6 - 8 - 10 mm 11 mm (serie RE530/531) USCITA COLLEGAMENTI CONNECTION POSITION A assiale / axial - R radiale / radial ALIMENTAZIONE SUPPLY 10/24 Vdc - 5 Vdc NUMERO IMPULSI/GIRO PPR NUMBER 2 - 25000 COLLEGAMENTI / CONNECTION OUTLET _ _ uscita a connetore / connector outlet C uscita a cavo / cable outlet TIPO - TYPE E520 senza impulso di zero / without zero pulse E521 con impulso di zero / with zero pulse RE520 senza impulso di zero, custodia in alluminio / without zero pulse, aluminium case RE521 con impulso di zero, custodia in alluminio / with zero pulse, aluminium case Serie RE530/RE531: custodia in alluminio, flangia RE0444 / Series RE530/RE531: aluminium case, flange RE0444 PP LD OC OP S SP

push-pull line driver 5V o 10/24V open collector NPN open collector PNP pull-up resistor NPN pull-up resistor PNP

DIMENSIONI DINGOMBRO - DIMENSIONS


E520 / E521 RE520 / RE521 RE530/RE531

* ALBERINO DISPONIBILE NEI DIAMETRI 8 mm - 10 mm (lunghezza 20 mm) - AVAILABLE SHAFT DIAMETERS 8 mm - 10 mm (length 20 mm)
con riserva di variazione variations admitted without notice

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 : el ap s p a@t i n . i t URL w w w .el ap .i t

02/10

Você também pode gostar