Hola manwenwe, o no te estoy entendiendo o tu estas muy confundido o no me entiendes. Algo está pasando.
Carlos. Justamente esa es la respuesta que esperaba. Tenía entendido que después del flanco de subida había que esperar "x" tiempo para poder ejecutar otro flanco de subida (la lentitud del motor para ejecutar el paso como tú comentas) y por descontado "y" tiempo de pulso en bajo para que el driver no confunda pulsos. ¿Estoy equivocado?.
El Mach, dentro de sus configuraciones tiene la posibilidad de seleccionar la frecuencia máxima de salida (o sea la frecuencia de dichos pulsos), esta frecuencia es la que debes de seleccionar de acuerdo al driver que poseas, a la PC que poseas y demás variables, si el driver es más vale lento, pues seleccionas la menor de las frecuencias (si no recuerdo mal es 25 KHz), que es la que te recomiendo para empezar las configuraciones, luego pruebas las demás.
Pongo un ejemplo. Yo quiero trabajar hasta 20000 vueltas y actualizo las vueltas a 1Khz.
Serán 20000 pulsos, ya que un PaP imposible que llegue a las 20000 RPM
Por tanto en 1ms puedo mandar hasta 20 pulsos. Imaginemos que el tiempo mínimo que necesita el motor para mover el pulso coincide con un ciclo a 20khz: por tanto cada pulso serían 25us a '1' y 25us a '0'. Pues lo que me comentaron (que tú me dices que no es cierto) es que el match si por ejemplo quieres enviar sólo cuatro pulsos te envía una señal pwm al 50% de duty con un perido de 50us y luego deja de enviar pulsos.
El Mach envía los pulsos cuando los necesita y en el momento que los necesita sin sobrepasar el periodo para la frecuencia máxima seleccionada, si la frecuencia seleccionada es de 25 KHz, esto sería un periodo de 1/25000 = 40 useg., por lo tanto si necesita enviar 4 pulsos los enviará con un periodo mínimo de 40 useg. y un duty cicle que no importa su valor, ya que no es importante.
Más allá de los anterior, el Mach limita la velocidad de los pulsos por medio del feed rate, esto sería la velocidad de avance para cada eje, o sea la velocidad de los pulsos para cumplir la velocidad de avance.
Y aparte de todo lo anterior, también está el seteo de la velocidad máxima de pulsos que permite cada motor, o sea que el Mach limita la velocidad de los pulsos a un máximo tal que el motor tenga la posibilidad de responderlos. O sea, de nada sirve enviar 10000 pulsos segundos si el motor solo tiene capacidad de responder a 5000 pulsos segundos
El que diseña el software de control es muuuuuy bueno (lleva 20 años con esto) y lo diseña de tal forma que reparte los pulsos entre todo el ciclo de "actualización", es decir ya lo tiene calculado para enviar cada pulso en el instante exacto para que las curvas salgan perfectas. Lo que sí que es probable es como tú dices que el que configura el mach no sepa hacerlo correctamente.
No entiendo bien que es lo que me quieres decir con "software de control" si el propio Mach es esto. O sea para controlar un CNC solo necesitas el Mach, los drivers y los PaP dentro del equipo CNC.
Que es el dichoso "software de control"?
Siguiendo el ejemplo anterior. A mi me piden que si mando 4 pulsos en el ms que toca que los reparta en '1s' de 25us de forma promediada. Esto con una fpga es bastante tedioso porque tienes que hacer divisiones, modulos etc. Si tal como me comentas el paso se ejecuta justo al flanco de subida, deduzco que si envio un pwm con duty 50% y frecuencia 4Khz obtendré el mismo resultado que si envio 4 '1s' de 25us. ¿Estoy equivocado?
Aparte de difícil de programar, tal como dices. Pues no tiene ningún sentido hacerlo, el Mach manda los pulsos y el driver debe de ejecutarlos lo más rápidamente posible, sin demoras, ni promediación, ni nada que se le parezca. No entiendo donde está lo complicado?
Antes de hacer todo esto que te están pidiendo, más vale realiza un programa que directamente interprete y ejecute el G code y listo, le veo más sentido y no necesitas de una PC esclava.
Creo que vos tenes una confusión con respecto a como funciona el Mach, y los que te encargan el trabajo también.
El Mach puede llegar a enviarte los 4 pulsos que mencionas de varias maneras distintras y por eso no es factible el promediado de tiempos que mencionas.
Por ejemplo, si está ejecutando una línea recta, lo más probable es que te envíe los 4 pulsos de manera equidistantes entre ellos (hablando de tiempos), pero si está ejecutando un circulo, pues puede enviarte los pulsos con un periodo logarítmico o anti-logarítmico entre ellos. O puede enviarte pulsos con tiempos completamente distintos entre ellos y no debes de promediarlos, porque estos pulsos muchas veces estarán sincronizados con los pulsos generados para los otros 2, 3 o 4 ejes.
Si promedias los pulsos de un eje, desfasas los pulsos de este eje con respecto a los de los demás y el trabajo deja de ser fiel al G code que debe de ejecutar el equipo CNC.
O sea, no termino de comprender que es lo que te pidieron hacer, ya que el Mach, con el hardware correcto para la PC (un puerto paralelo), los divers de los PaP y el equipo fresador/torneador es más que suficiente para que todo funcione de manera correcta. Si no les anda, pues está mal configurado, así de sencillo.
Un saludo.
Atte. CARLOS.