Discusiones sobre Productos NI

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

Control de tiempo entre iteraciones

Hola a todos

 

Tras mucho tiempo sin forear, por aqui vuelvo a dar un poco de guerra a ver si me podeis ayudar. Estoy realizando un programa y este es en el punto en el que me encuentro.El primera paso del programa es que me pida una serie de datos a traves de pantallas con una serie de condicionantes, eso resuelto. Luego despues con esos datos me tiene que generar una serie de funciones, es decir que obtengo dos arrays: Uno de voltaje y otro de tiempo en el cual se debe aplicar el voltaje del primer array, esto tambien esta echo. Ahora llegamos al meollo de la cuestion, con lo que he generado hasta el momento tengo que aplicar cada voltaje del array a una tarjeta NI-USB6211, en el instante determinado del array, La solucion que he hecho hasta el momento es esto: (VER LA FOTO)

 

Pero con esta solucion, que en principio si me funciona, me encuentro con dos problemas: 1º que si la diferencia es 1,2 milisegundos por ejemplo me lo pasa a 1 milisegundo y dos para diferencias menores de 1 ms no funciona. Que soluciones me proponeis? Es muy chapucero lo que he hecho? Ya me ireis contando y muchas gracias de antemano

0 kudos
Mensaje 1 de 3
2.593 Vistas

Hola Obli33. Gracias por utilizar el foro.

 

Con respecto a la espera que estas implementando:

 

1. La función que estás utilizando es Wait (ms), que se ejecuta en paralelo con el resto del código. Esta función solamente acepta números enteros, por lo que si introduces un "1.2" se redondearía. Este es un comportamiento esperado.

 

2. En el sistema operativo de Windows no es posible tener una espera menor a 1 ms, si deseas obtener un temporizado mas rápido necesitarías utilizar un sistema operativo de Tiempo Real, que puede llegar a ser determinístico hasta 1 us.

 

Algo más que noté fue que multiplicas el número por mil antes de introducirlo a la función, cuál es la magnitud de los números que estas introduciendo?

 

Saludos.

Aldo H
Ingenieria de Aplicaciones
0 kudos
Mensaje 2 de 3
2.584 Vistas

Buenos dias

 

En primer lugar Aldo, muchas gracias por contestarme tan rapido!!! A ver por partes a ver si soy capaz de expresarme con claridad o por lo menos hacerme entender. Con un Wait ya me temia que no podia bajar de 1ms pero bueno era por si se os ocurria otra solucion que no fuera con Wait, pero vamos 1ms de tiempo minimo me podria llegar a valer, eso si me interesaria cambiar lo de que me lo redondease, por que eso si que necesito que sea el tiempo que sea y eso no se como cambiarlo o como hacer.

 

PD lo multiplico por 1000 para ser ms

0 kudos
Mensaje 3 de 3
2.576 Vistas