Discusiones sobre Productos NI

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

Como hacer para que dependiendo de la adquisición análoga el programa actue con la parte digital

Estimados: Como hacer para que en un programa que involucra una adquisición de sensores y dependiendo de estas lecturas realice una tarea digital.
 
En concreto. En el programa que anexo, tengo que hacer lo siguiente:
 

- Cuando esté en digamos en 0 grados la inclinación, si se le da bajar no lo haga y se mantenga la secuencia del boton "detener", y si está a 43 grados se le da subir que no suba y se mantenga la secuencia del boton "detener", es decir el programa debe de mover el motor entre 0 y 43 grados a voluntad osea de arriba a abajo en este rango.

- Cuando el plano se le de subir (esté a cualquier altura) y al llegar a 43 grados, se desea que se detenga sólo osea que se vaya al botón "detener" y así mismo cuando se le dé bajar y en el momento que llegue a 0 grados se detenga sólo osea se vaya al botón "detener".

- Cuando haya un desplazamiento mayor a 1 centímetro se detenga el plano

Sé que es muy fácil lo que se quiere pero no tengo idea y el proyecto se tiene que entrega ya, y se me hace muy dificil el coordinar la parte de adquisición con la parte digital del programa. Es posible que me puedan ayudar a realizar unas modificaciones al programa??

Espero me puedan ayudar

Gracias

0 kudos
Mensaje 1 de 2
2.929 Vistas

Hola Alan, viendo tu código creo que tu problema es que tu sistema no reacciona rápidamente a los cambios de inclinacion pero si de los botones. Aquí lo que está pasando es que cuando no hay eventos en tu panel frontal tu ciclo de abajo no va a trabajar hasta que haya un cambio en el panel (así es como trabaja la estructura de eventos).

Aquí lo que podemos hacer para lograr un mejor funcionamiento es separar tu parte de escritura del puerto del el ciclo que controla los botones. Esta colócala en un ciclo aparte que va a estar encargado de estar escribiendo a tus salidas digitales constantemente. En este escribe la lógica de lo que debe o no salir dependiendo de qué botones estén apretados.

Ahora no deseches tu estructura de eventos porque aquí vamos a aprovechar el filtro de eventos. Si quieres que por ejemplo no te permita apretar el botón de abajo si estas a 45 grados lo que haces es agrega el evento mouse down? del botón de abajo. Este filtra el evento lo lee antes de que sucede, aquí tu puedes comparar el valor de tu pendiente que lo podrías leer de una variable local.  Si no está en rango que le escriba true a la terminal de discard.

Te anexe uno que no te permite apretar un botón si la perilla tiene un valor menor a 5 lo que evita que cambie el estado.

Saludos

 
Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 2 de 2
2.917 Vistas