Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Director: Dr. Ing. Mario Benedetti Co-Director: Dr. Ing. Daniel Oscar Carrica
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
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
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
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
1.1.
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.
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
pull-out pull-in
regin de arranqueparada
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
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.
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
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
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
i(t)
Dti=100us
i(t)
Dti=200us t i-1 i i+1
i(t)
Dti=300us t i-1 i i+1
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
(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.
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,
10
135
IB 90 180 0
45
110
120%
IB 90
100%
IA
100%
170
100%
10
IA
180
80%
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
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
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.
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
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
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.
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.
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
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
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.
19
2.2.
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.
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
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
22
+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.
23
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.
24
1 8
1 2 8
S N
S S
N N
S S
S
5
S
5
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
Figura 2.5: Alineacin de las fases en funcin de la secuencia de excitacin de la o o o Fig. 2.6(a).
25
vA
1
t
vB
t
vA
1
t
vB
t
vA
1
t
vB
t
(c) Medio-paso.
26
2.3.
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)
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:
28
(2.2)
(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
(2.6)
egA +
iA = TA
d d (1/2 i2 LA ) A + dt dt
(2.7)
29
iA egA + iA
(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
(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)
TA = El trmino e
i2 d(LA ) A 2 d
(2.11)
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
(2.12)
30
TB =
iB egB
(2.13)
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)
(2.17)
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):
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:
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.
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
(2.23)
VB r iB lB
(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
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
+ -
34
2.5.
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:
(2.26)
(2.27)
x2 =
(2.28)
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)
(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)
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
d=F Km = KE Km = Kh
2.6.
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
37
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
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
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)
39
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
40
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.15
0.2
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
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/.
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.
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.
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)
desaceleracin
t
Ta Ts Td Tn
v(t) =
Vmx t a Ta
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
(3.2)
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)
t
Ta Td Tn
Figura 3.2: Perl de velocidad exponencial. El desplazamiento total del motor comandado con un perl exponencial es:
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)
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)
48
v(t)
t
Ta Td Tn
a(t) = Vmx a
(3.11)
3.1.4.
Perl sinusoidal
v(t)
desaceleracin
t
Ta Td Tn
v(t) =
Vmx a 2
1 cos
2 t T
(3.12)
49
D=
(3.13)
a(t) = Vmx a
(3.14)
3.1.5.
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
D=
(3.16)
a(t)
,0 < t <
(3.17)
,T <t<T 2
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-
(3.18)
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
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
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.
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
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
Velocidad, [pasos/s]
250
200
150
100
50
10 Tiempo, [s]
12
14
16
18
20
(3.19)
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
a, e
a, d, e
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.
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
(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
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.
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
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
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
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
3 8 2 2 3
k4 k4 k4 d4 a4 .
dnde k4 = o
3.2.3.
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)
59
3.2.4.
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.
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.
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
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
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
VS /4
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
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
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
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.
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.
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
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
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
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)
70
tn = tn+1 tn = =
(4.15)
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
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
71
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
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)
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.
(4.20)
(4.21)
74
f(t)
fi+1 fn fi fi-1 fi-2 t
i(t)
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
(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.24) (4.25)
(2N 3)2 +
2 2 2 (fn f1 )
2 fn 2 f1
1 + 2n 3
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)
tn = tn+1 tn = =
= (4.27)
2 fN + 2a (1 + n N ) +
2 fN + 2a (n N )
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
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
1.2
1.4
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.
77
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
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
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
79
forma: d=
2 2 2 (fm fn ) 2 fm fn 2
(4.31)
(2N 1) +
1 + 2N 1
tn = tn+1 tn = =
2 fm 2nd +
= (4.32)
2
2 fm 2d (n 1)
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
80
20
18
16
14
fn, [KHz]
12
10
0.2
0.4
0.6
1.2
1.4
1.6
1.8
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)
81
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)
|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
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:
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
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
3 y en t = 4 T ) es:
|amx | = 24Vmx a a
84
3.5
2.5
fn, [KHz]
1.5
0.5
10
15
20
25 Tiempo, [ms]
30
35
40
45
50
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
85
T 1 tn = + 4 2 + 1 2
+ T3 +
1 +
(4.42) en donde:
2 2 2 1 = 432 fn T 5 + 432 fn n T 5 + 108fm fn T 6
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
1 +
2 + 2 2
1 +
1 +
1 3 3 T 2 4T nfn 2 T 2 fm fn 2 + 4
3
+ 2 + 2 2
1 +
1 +
2 (4.43) 86
1 +
1 3 3 3 T 2 4T nfn 2 4T fn 2 T 2 fm fn 2 + 4
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 +
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
fn
1 +
2 +2 1
1 +
2 + 2 1
88
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
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
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
10 Tiempo, [ms]
15
20
25
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.
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
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.
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
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
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)
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.
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.
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
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)
100
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
101
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
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
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.
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
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.
En un planteo general, la velocidad puede denirse por la ecuacin en difeo rencias que se aprecia en (5.11).
(5.11)
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
(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
106
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
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.
108
5.5.1.
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
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.
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).
110
Clock Tclk
Contador 16
nk
16
VR
Multiplicador 1/TC
32 32 Comparador VR nk 1/T
C
VR nk
Drivers de Potencia
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
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
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
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.
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
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.
116
1500
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
117
1500
1000
500
0.5
1.5
3.5
Figura 6.2: Perl parablico adquirido con encoder ptico de 1024 ppr. o o
118
1500
1000
500
Figura 6.3: Perl con curvas-S adquirido con encoder ptico de 1024 ppr. o
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.
120
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
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
122
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
123
6.2.
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
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]
Velocidad, [rev/s]
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
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
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
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
127
convencionales, y el procesador fue substituido por un FPGA de tamao similar n y costo equivalente.
6.2.1.
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.
128
Perfil de posicin
Posicin, [rev]
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
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.
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.
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.
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
133
7.2.
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
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)
135
v= entonces
xenc tenc
(7.2)
NT Tk = por lo tanto
xenc v
(7.3)
NT =
xenc 1 Tk v
(7.4)
emax =
(7.5)
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
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
(7.8)
NT max =
(7.9)
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
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
138
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
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
2 k
Clock de referencia
Registro de desplazamiento
Generador de sincronismo
Registro de desplazamiento
24
FIFO
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
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
141
7.4.1.
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
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.
143
Adquirir Lectura
i=0
Si
i<n ? No
Si
Hay ms datos ?
No Fin
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
Medicin perodo
/ /
/
32
/ /
16
8 8
/
Puerto de E/S FPGA Decodificador de direcciones
Bus ISA
16
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 %.
146
10
Medido Adquirido
Perodo [us]
10
1
10
10 Frecuencia [kHz]
Medido Adquirido
10
Perodo [us]
10 Frecuencia [kHz]
147
50
100
200
250
300
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.
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.
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
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.
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
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:
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
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
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
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
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
677
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
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
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
Apndice A. Publicaciones e
163
680
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
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
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
Time, [s]
Fig. 5. Trapezoidal prole.
Apndice A. Publicaciones e
166
683
Velocity Profile
18000 16000 14000 12000
Steps/s
Time, [s]
Fig. 6. Parabolic prole.
Velocity Profile
16000 14000 12000
Steps/s
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
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
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
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.
Apndice A. Publicaciones e
176
121
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
Fig. 4.
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
123
Fig. 6.
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
[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.
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
!"#$
%
&'
( )
*+',
-./
&'
( *
! " # $ %
&
' '
173
Apndice A. Publicaciones e
181
, " $# +, "" # #' # #, # +, # ."#" # +;"#" ! "#" # + # 1" # +" +" #" D" # "# @ #"# A" # +" # "* #" # +"
#" (@ " 037 ''
" A" # % # "#" #% @
%#" ## # #" +"##" +" " "#
" " "
& + # #, # " +" ) +"#" # #" " # + - " +" 0 + +7 " +## # " +" # +" 2 ( " "
$& #" +.## # #"
/" # %I #% " - # + ( " "% ) +.## # ", # +" ( # +"#" # #+"& $" +##" # +, "" +"#" +"+" 2 "+#" J#"= 46 &
+" #
( +" ( ## ( A +##" # +, 1 ( # $& " #
;+
0# #
%
34457
+ !, # 2 #
## ( $"##
%. )" ## # ", ( # "
"#" +## ;& #
+# + # @ 0337 03:7
097
0E7
0F7
, 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
9@ #, # A" # +" " & " # $"## "-, "# # #+"& $" "#" 2" " " +"#" #%'
-
+% # % - E # %"( # +"+" " # % # 2
( ! + +" " #" ) 1& %" " '- "#" # # % ( + ."#" # +;"#"
& ( #" # "" # ( # $" +" # "#
"#" # "& #" #" " # #+!" #"#-#" # 1" # +% # " % ##
# /" # +% A
"%" #
) %
+ ( ## " " + " % ; " # "" # 1%, # " & " # '#" +"#' #+!" ) " % " -$"
( " "& , A
' #" "
(& ##" +" " % ##
( ' #1#" #" $ +% # "# " "%%
% 3@
"" # "+, 2 " ", # #"" " "%" +"% +% #
) %
) #" ; # "## # " +- # $"## #" ( ) +"%## # " " & +% "# "+" %. " " ( +# " +"#* #"& ## " " # $"## " ( # "+, # #" " $", # +", " 1 " $ +(/"
#" ( ! ," % # "
% #& +"%
# "
%
% " " +% # #"" ( + #"#-,
% # #, # ", ) " A& " % # " "" ##"
" # #( $" "" " ' $; "" % # #" ) ( #" +"#! "& +, # #" " 1%' %" #" # " #%#" ( $" # ", +"#& $"## %*
+" " ( " #" #" ' # % " +"" ) #"+, # " #"
" " ;#" # %I +" +"& #" ) #" " ++ # 2 +"" # #, "+ #" " #" #" " ";#" $; " = +% # #(# ) # 2
" $" #" " ", "+# # "# ) + +"# ! "+, . " " "
) +"# +", " $"##
Apndice A. Publicaciones e
183
" #"+ ", "& )#" $" " # " #" 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
( )*
" !
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
< "=
# > > L) " "1 " C") " "
2"" $
M ... /
.
.5 062
33N34 034497
1
> # 2"" L+ "# & "
+# # 2"" "" # ) "#"M
0 %,,
0
++ 3HGN35: 034567
177
185
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
187
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.
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.
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
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
190
En la Fig. B.4 se observa el circuito impreso (PCB, Printed Circuit Board ) de la interfase PC-Sistemas de la ESDF.
191
FPGA
DSP
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.
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.
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.
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.
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.
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).
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)
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
CPU1
REG1
REG2
32
32 Multiplier 40 40 40 32
4040
Data-Receive Register
Controller
X1 X2/CLKIN H1 H3 EMU(30)
40
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
32
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.
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.
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
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.
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.
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
204
main
comman
Tx
TRANSMIT DATA-ACKNOWLEDGE TO UART (to PC) (transmits 0xfa which is Dataacknowledge word)
Page 1
205
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
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
Page 2
206
state
m1_1
Initialize Serial Port as Driver compatible. Transmit motor state n to UART Transmit r3 to UART
tx state_e
Page 3
207
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
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
208
; 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.
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.
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
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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
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.
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.
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
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
219
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
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.
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.
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
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
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.
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
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.
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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 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.
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.
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
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).
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
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
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
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 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.
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
236
ticon
tiper
mem10204 pbcr1 chiche pointPER poinOUTCUR pointFIL pointSEQ poinSEQOUT poinENDFIL COUNT
notOK
notOK1
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
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.
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
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
240
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
241
;C4 = -32*(A*e)*e/T^2 ldf @9dd3h, r7 mpyf -32.0, r7 mpyf @9dd4h, r7 stf r7, @9dcdh
;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
; ; ; ; ; ; ; ;
;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)
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
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.
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.
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
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)
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
; 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
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
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
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 ;
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)
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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.
254
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
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]
CLKDIV[15:0]
CE CLKDIV4 STEPCLK C
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]
H14
CMP CLK
H13
STEPCLK NFIN FIN D A B C
H3
A B C D
CLKDIV3
COMP24 B
CLR
Xilinx Corporation A 2100 Logic Drive San Jose, CA 95124 Date Last Modified: 6/5/00
255
H
COMP16
PERF[15:0]
VMIN[15:0]
A[15:0]
EQ
PERF[15:0] G
AND2
BGA
F VMIN[15:0]
CB16CLED
COMPMC16
D[15:0]
Q[15:0]
PERF[15:0]
F
GT
A[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
A
CLK2 CLR1
CE C CLR
CEO TC
256
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
VCC
GND VCC
Xilinx Corporation A 2100 Logic Drive San Jose, CA 95124 Date Last Modified: 6/5/00
257
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
258
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
VCC
G
CB16CE Q[15:0] CE CEO TC CLR
GND
FJKCE
CLKDIV[15:0]
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
260
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
261
A1 INV A AND2
G
B1
F
VCC
D0 D1
Q0 Q1 C1 C
AND2
E
D AND2
NFIN
Xilinx Corporation A 2100 Logic Drive San Jose, CA 95124 Date Last Modified: 6/5/00
262
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
GND,GND,GND,VCC,GND,GND,VCC,GND
A[7:0] GT
LT
GND
V[15:8]
B[7:0]
Xilinx Corporation A 2100 Logic Drive San Jose, CA 95124 Date Last Modified: 6/5/00
263
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 P28
GND
16AND
DI[15:0] DO[15:0]
ADD16
R G
FDRE Q P24
B[15:0] CO
OFL
X[15:0]
FDRE Q F P20
16AND
CE CLK
FDRE Q P16
16AND
FDRE Q P12
R D
FDRE Q P8
FDRE Q P4 C
VCC
VCC
GND
VCC CLK RESET
CE CE C R CLK RESET R
FDRE Q P0
R B
264
265
266
STEP MOTORS
KM09
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
Overhang lb (kg)
25 (11) 25 (11) 25 (11)
Thrust lb (kg)
50 (23) 50 (23) 50 (23)
KMO91 KMO92
10
KMO93
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
11
www.DanaherMotion.com 704-588-5693
268
STEP MOTORS
Encoder
www.DanaherMotion.com 704-588-5693
Outputs:
C12 Encoder
Terminal Box
12
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
400
400
KM091
150 100 50 0
800
800
KM092
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
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
270
STEP MOTORS
KM11
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
Overhang lb (kg)
75 (34.0) 75 (34.0) 75 (34.0)
Thrust lb (kg)
130 (59.0) 160 (72.6) 160 (72.6)
oz-in (N-cm)
1,450 (1,020) 2,750 (1,940) 3,750 (2,650)
14
271
STEP MOTORS
Encoders
Incremental Rotary Optical Kit Encoders
www.DanaherMotion.com 704-588-5693
EK
Encoder Kit
21
25
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)
22
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
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
23
273
STEP MOTORS
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
lb-in2 3.418 x 10
3
lb-in-sec2 8.851
www.DanaherMotion.com 704-588-5693
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
8.333 x 10 -2 =====
lb-ft
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.
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".
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
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
275
STEP MOTORS
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.
30
276
STEP MOTORS
Connection Diagrams
www.DanaherMotion 704-588-5693
31
NOTE: Numbers identify terminal board connections.
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
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
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
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
= 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
281
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.
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
282
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
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
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
ELETTRONICA ELECTRONICS
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).
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
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)
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
* 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