Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Problema con programa Lavbiew, velocidades, CNC, y coordenadas, Archivos gerber

  Hola a todos, espero alguien pueda ayudarme.

 

  Estoy realizando un programa para una CNC, donde se implementan archivos gerber (coordenadas cartesianas), al parecer el programa ya funciona bien, y hace lo que esperaba que hiciera, todo bien con la logica y esos asuntos,, pero los problemas que tengo al parecer va con  la estructura del programa, eso es lo que creo.

    Cuando empieza a dibujar las coordenadas en una grafica, empieza bien, pero al cabo de un rato empieza  a dibujar mas lento, sin cambiar la velocidad y la computadora se empieza a hacer un poco lenta,, he pensado que el problema es a la hora de organizar los bloques de while loop, trate de poner todo en un solo bloque while, pero asi no funciona, asi que separe en varios while, y es como funciona, pero con los problemas que menciono. Tambien pense que el problema empieza con la sincronizacion de todos los timers que hayOk,, entonces adjunto los VIs, soy cuatro , uno que esta completo (el automatico), y los otros tres son etapa 1 etapa 2 etapa 3, explicados, por separado y funcionando de manera manual.

 

  Espero que alguien ya haya pasado por etos problemas, y pues aber si tienen ya la solucion,, y pues se los agradesco si me indican.

 

 

 

Descargar todos
0 kudos
Mensaje 1 de 6
4.751 Vistas

Agrego los demas archivos junto con el archivo gerber, que se me paso.

 

  Otro problema que quiero solucionar es cargar el archivo gerber cuando yo lo desee (presionando en el botoncito de la carpetita), ya que al correr el programa inmediatamente me abre el cuadro par buscar el archivo  y cargarlo.. eso no me agrada,,,, si alguien sabe como hacer eso. gracias
 

Descargar todos
Mensaje 2 de 6
4.745 Vistas

Estimado Aven

 

Estoy viendo tu código y hay muchos detalles que te pueden estar causando el problema.

 

La estrategia en cuanto la estructura que estás utilizando no se me hace la más adecuada, ya que no deberías de tener dos whiles separados para las coordenadas X y Y, ya que no están sincronizados, corren a la velocidad que pueden y aunque "teóricamente" deberían correr al mismo tiempo por que los Waits son iguales, el procesador trabaja de manera distinta. Aquí la recomendación es que en un solo while manejes eso y al mismo tiempo y sin variables compartidas escribas las coordenadas.

 

Otro error muy grave es que no está temporizada correctamente tu aplicación, por ejemplo, en mi máquina con Core 2 Duo y 4 Gb en RAM, el procesador se va al 80%, si tu computadora es de menor capacidad seguramente se va al 100% y bien podría ser la causa del fenómeno que comentas. Esto lo puedes resolver analizando que estructuras iterativas se ejecutan muy rápido y sin temporización. Un ejemplo de este es el 2do while que tienes que no tiene temporización.

 

Otro comentario, en tu último while, tienes que se ejecuta cada 1 ms, pero no le veo sentido actualizarlo tan rápido ya que en los whiles de escritura de la coordenada X y Y se actualizan en el mejor de los casos cada segundo. Probablemente lo hagas por otra razón pero de cualquier manera te dejo el dato.

 

Espero puedas realizar algunas modificaciones y me avises como sigue tu proyecto.

 

Saludos

 

Coamín Cruz

AE México

0 kudos
Mensaje 3 de 6
4.701 Vistas

   Que tal coamin.

  Te agradesco que te hayas tomado tu tiempo para analizar el programa, pues intente pasar todo en solo while, al parecer si cambio bastante, ya no me hace las cosas lentas, ahora esta  normal, ahora el problema que tengo es que no me dibuja bien las lineas,,, y no tengo idea de cual sea la razon.  Y si de paso sabes como hacer par habrir cargar el archivo cuando yo lo desee y no cuando corra el programa, te lo agradecere tambien. 

0 kudos
Mensaje 4 de 6
4.692 Vistas

 

Estimado Aven

 

Aquí la sugerencia que te puedo hacer es que uses las herramientas que tiene LabVIEW para debug, como el highlight execution, probes, breakpoints, etc. A primera instancia no se que podría estar causando ese fenómeno que comentas, pero lo que si estoy seguro es que si lo corres lentamente con el Highlight execution podrás identificar que está ocurriendo. Presiento que como estás manejando muchas variables y no están sicronizados los While, se te presenta una race condition (problemas por manejo de recursos compartidos en paralelo), y para resolver eso te sugiero evitar hacer comunicación con variables y más si es posible juntar esos whiles.

 

Ahora bien, el control de cuándo cargue tu archivo se puede hacer de dos maneras, la primera es corriendo un while con temporización y dentro de él un case controlado por un botón y ahí cuando se cumpla la condición se cargue. Esta opción no es muy recomendada ya que se hace mucho consumo de procesador por el polling, aunque si lo haces con una buena temporización no habría problema. La segunda opción es utilizar eventos, sin embargo dado que estás presentando problemas con cosas básicas no te sugiero trabajar con eventos hasta resolver tus problemas anteriores.

 

Como sugerencia evita la lógica duplicada que tienes e inecesaria como temporizadores con 0 ms.

 

Saludos

 

Coamín Cruz

NI México

 

0 kudos
Mensaje 5 de 6
4.672 Vistas

tl ves te sirva este, haun no esta todo coregido

0 kudos
Mensaje 6 de 6
3.317 Vistas