Discusiones sobre Productos NI

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

Salida de corriente NI USB 6008

¡Resuelto!
Ir a solución

Buenos dias.

 

Me pongo por primera vez con vosotros, ya que un amigo me comento la existencia de este foro de colaboracion, cuando el tenia algun tipo de duda recurria aqui. Y en esa situacion me encuentro yo, con una duda, a ver si me podeis echar un cable.

 

Tengo una tarjeta NI USB-6008 y a la salida de la cual tengo una electrovalvula, la electro valvula se alimenta de 0 a 10 voltios. Y claro la tarjeta como salida solo nos aporta de 0 a 5 voltios por lo que las posiciones de la valvula de 5 a 10 voltios queda sin usar. Como solucion se me habia ocurrido en vez de alimentarlo en voltios, alimentarlo con corriente ya que la valvula se alimeta de 0 a 20mA o otro rango de 4 a20mA y nuestra tarjeta si que llega a los 20mA. Pero no soy capaz de configurar una salida de corriente, solo soy capaz de generar una salida de voltage. Me podeis echar una mano con esto. Perdonar un poco mi falta de experiencia pero son mis primeros trabajos con labview asi como con la tarjeta NI

 

Muchas Gracias

 

Pablo.

0 kudos
Mensaje 1 de 13
4.924 Vistas
Solución
Aceptado por el autor del tema Obli33

Hola, me parece que la tarjeta 6008 no tiene posibilidad de salida regulada por corriente: el valor indicado simplemente es el máximo que cada canal puede dar para comandar a los dispositívos externos (y con 5 mA max en cada salida análoga tampoco puedes gobernar a tu válvula).

Creo que lo más simple es añadir un amplificador externo que doble la tensión de salida de manera que puedas obrar en el rango 0÷10V.

No se entiende si ya has logrado pilotar al dispositivo, por lo que no sé si tu válvula tiene un equipo de gobierno al que ingresar la señal análoga (que no va a absorbir mucha corriente de la tarjeta) u si esta tensión directamente ingresa a la válvula (en este caso tienes que averiguar cuánta corriente se necesita: poner un amplificador puede serte aún más necesario en este caso dependiendo del valor necesario).



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 kudos
Mensaje 2 de 13
4.922 Vistas

La valvula ya consegui que se moviera limentandola con una fuente de alimentacion externa, pero claro queria conseguir gobernarla con la tarjeta de NI, la posibilidad de un amplificador la verdad que ya lo habia pensado, por que me parecia a mi que regularlo con corriente no se iba a poder, asi que ahora que tengo tu consejo pues ya me decido por la idea del amplificador, muchisimas gracias. Por cierto otra dudilla a ver si me podriais resolver, en una de las operaciones de gobierno de las que tengo que diseñar, la valvula debe partir de una posicion inicial (alimentacion a 0v) a la posicion de maxima apertura (10v), en esa posicion estar un segundo ya que solo debe permitir un paso muy pequeño de liquido y retornar de nuevo a la posicion de 0v. El problema es el siguiente los cambios de posicion no son instantaneos es decir el paso de la posicion 0 a la posicion 10 tarda aproximadamente 41 segundos por lo que no se puede poner una estructura de eventos por que no le da tiempo. He probado a pone un time delayed de 41+1= 42 segundos para pasar de un frame a otro pero me da como una especie de error de conflicto de tareas y me he perdido un poco, por lo demas el programa va bien para ser mis primeros pinitos jeje. Otra vez mas muchisimas gracias.

 

Pablo

0 kudos
Mensaje 3 de 13
4.911 Vistas

Hola: Pablo

 

Yo tambien estoy trabajando con una electrovaluvla y no se si es que estoy confundido con tu pregunta, necesitas que tu valvula pase de 0v a 10v en un segundo y luego se vuelva a quedar en cero durante 41 segundos? Si es asi, te adjunto un Vi que hace esto.

 

Para tu otra pregunta, mi valvula necesita 24 voltios y simplemente monte una fuente y la activio y desactivo con un rele de 5v

 

Si la pregunta era otra, el cambio de estado de las electrovalvulas es inmediato, si se te demora 41 segundos en cambiar es algun condensador.

 

Att,

 

Camilo Andres Arbelaez R

kaine.c7@gmail.com

0 kudos
Mensaje 4 de 13
4.903 Vistas

@Camilo

Creo que la válvula que Pablo tiene que maniobrar es diferente de la tuya. Por lo que he entendido tu dispositivo es simplemente un bloque y tiene solamente dos estados -abierto y cerrado- En cambio la de Pablo creo que es una válvula proporcional, esto es se abre más o menos dependiendo del valor de la tensión (corriente) de comando, por lo que permite regular el flujo de líquido de manera contínua. Esta válvula tiene un bloque de control (motor u otro dispositivo) que tarda 41 segundos en pasar del mínimo al máximo, por lo que el programa debe esperar a que el movimiento se complete antes de pasar al siguiente cambio de estado.

 

@Pablo

lamentablemente no estoy utilizando el LabVIEW desde hace muchos años, por lo que creo que es mejor esperar a que alguien conteste a tu pregunta.



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 kudos
Mensaje 5 de 13
4.885 Vistas

Hola Pablo, ahorita estas entrando con uno de los conceptos más importantes en el manejo de LabVIEW y es la temporización. Para esto existen dos tipos de temporización:

En LabVIEW existen dos tipos de temporización.

  • Tiempo de Ejecución: Controla que tan rápido se ejecuta una aplicación en el procesador
  • Control de tiempo por software: Controla el tiempo en el que se tiene que realizar una operación en el mundo real.

 

El tiempo de ejecución es el tiempo que vas a colocar en el ciclo, si no colocas nada de temporización en tu ciclo este va a correr lo más rápido que puede y satura el procesador, para controlar este tiempo de ejecución te sirven funciones como el wait, wait until next ms o los timed loops (estos últimos con manejo avanzado también se pueden utilizar para controlar tiempo por software pero hay manejaras más sencillas de hacerlo.

El control de tiempo por software, te permite temporizar actividades por ejemplo si tu quieres que un semáforo este encendido 5 segundos, no vas a usar un ciclo que tarde 5 segundos por ciclo, si haces esto nada dentro del ciclo se va a poder ejecutar durante 5 segundos. Una forma de implementar esto es por ejemplo usas un wait de 10ms (esto es para que tu ciclo reaccione cada 10 ms, y dentro del ciclo agregas un Elapsed time, o generas esta variable funcional global para manejar el tiempo. Cada vez que transcurra el tiempo cambias el semáforo, pero tu ciclo corre mas rápido lo que permite que otras funciones trabajen con esto.

 

Ahora en este caso veo que tienes que estar haciendo una secuencia de pasos, ahorita que tu programa no esta tan avanzado te recomiendo que cambies tu Flat sequence por una maquina de estados. La desventaja de La Flat Sequence es que esta si quieres agregar un paso intermedio es muy limitado, también por ejemplo para detener tu programa tienes que esperar a que termine de ejecutarse toda tu estructura lo cual puede aparentar retraso y si quieres cambiar en forma dinámica en tu secuencia se vuelve muy complicado.

Para aprender mas de máquina de estados estos links te pueden ser útiles:

Application Design Patterns: State Machines

Using a State Machine (Event Driven) Architecture - Developer Zone - National Instruments

Tutorial: State Machines - Developer Zone - National Instruments

Te anexo un ejemplo de temporizaciones, y una pequeña maquina de estados que tiene lo del tiempo de espera de tu válvula.

 

 Saludos

Benjamin C
Principal Systems Engineer // CLA // CLED
Descargar todos
0 kudos
Mensaje 6 de 13
4.872 Vistas

En primer lugar daros las gracias por las multiples respuestas, no he podido avanzar en el tema por que me he encotrado enfermo y no he podido venir a donde estoy realizando este proyectiyo. Seguidamente paso a esplicar un poco mas el proceso que conlleva por que parece ser que no lo esplique bien pido disculpas por elllo, la valvula acepta todo rango de posiciones (viene fijadas por el volataje) de entre 0 a 10 V siendo 0 voltios la posicion de cerrado, 5 voltios para que de caudal por una de las  dos de las tuberias que controla la valvula y 10 para que pase caudal por la otra. Si yo le paso tension con a la electrovalvula para que pase de la posicion fijada en 0V a la posicion de 10V en hacer el desplazamiento tarda 41 segundos, es decir si yo en labview hago un cambio de 0 a 10, el tiempo que tarda en verse ese cambio en la electrovalvula es 41 segundos. Lo que yo persigo es crear una secuencia que se un cambio inmediato de un segundo es decir que pase de 0 a 10, que permanezca en 10 un sg y vuelva a 0, cual es el problema, que en llegar de 0 a 10 tarda 41 segundos por lo tanto como consigo reflejar ese tiempo que tarda en posicionarse correctamente la valvula en labiew.

 

Becega muchas gracias por esplicarme lo del timming por que estoy un poco pez todavia en estos mundos jeje, lo unico que te pediria dos favores, aunque ya son un poco abusivos si cabe, el primero es que si esos ejemplillos que me has pasado me los podrias pasar a la version 8.5 por que es con la que trabajo, y dos es una pregunta existe el tutorial de maquinas de estado en español, por que mi ingles es un poco flojo y me pierdo un poco.

 

Un saludo a todos y muchas gracias

0 kudos
Mensaje 7 de 13
4.843 Vistas

Hola Obli aquí están los archivos en 8.5, ahorita que lo abras vas a poder ver un poco mejor cómo funciona la máquina de estados.  
Básicamente en este caso lo que haces es mandas el voltaje de tu válvula a 10 y vas a pasar a un estado que se llama a abrir, en este estado vas a permanecer (en la máquina de estados es estar regresando) durante 41 segundos o el tiempo que tardes en abrir, puedes sumar el 1 segundo que quieres que dure tu válvula abierta al máximo. Una vez que termine eso la puedes mandar al estado de cerrar válvula y puedes volver a esperar los 41 segundo que tarda.

Por el tiempo que manejas supongo que son válvulas bastante grandes. 

 

Con lo del tutorial lamentablemente todavía no lo tenemos en español, pero lo pondré en la lista de documentos a traducir, o crear un tutorial en español.  Pero si tienes alguna duda puedes preguntar por aquí.

Saludos

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 8 de 13
4.839 Vistas

Buenos dias

 

EN primer lugar a ver que te parece lo que he echo a ver si mi primera maquina de estados es correcta o no. Pero ahora de repente me he encontrado con un problema y no acabo de entender por que pasa, y es lo siguiente el progrma tambien tiene que leer de dos manometros dos señales de voltaje que van a la tarjeta NI, antes funcionaba correctamente por que es lo primero que hice y eso funcionaba correctamente, pero ahora me devuelve un valor constante y viendo ya como funcionan estas tarjetas creo que debe haber algun tipo de problema y me esta mandando todo el rato el ultimo valor que ha leido, eso creo yo, pero he revisado todo y no se cual es el problema de comunicacion que tengo ahora. 

 

Muchas gracias

0 kudos
Mensaje 9 de 13
4.818 Vistas

Hola Obli a mí me funciono bien el programa con un tarjeta simulada, tu maquina de estados ya va cobrando forma nada mas un par de consejos:

el Enum que utilizas para la máquina de estados conviértelo en una type Definition. Para hacer esto simplemente da click derecho en el enum mas completo que tienes ahorita, conviértelo a un control (esto es para poderlo grabar). Ya que sea un control desde el panel frontal dale click derecho>>Advance>>Customize, aqui en la parte de arriba puedes seleccionar que es un type definition.

Ya que lo crees remplaza todos los que tienes por este.  La ventaja de los type definition es que si modificas uno se modifica en todos los lugares que este, esto te ayuda a que sea mas fácil de escalar tú maquina de estados.

Ahora con respecto a tu adquisición de la tarjeta dado que no tiene relación con la máquina de estados, aquí lo que más te conviene es colócala en un ciclo while independiente en tu programa, de esta forma corre a su propio tiempo y no afecta ni se ve afectada por la máquina de estados.

La tercer parte es en lugar de usar 5 veces el DAQ assitant puedes colocar uno solo después de tu case, y ya le cableas el valor desde el case, para el caso de inicio podrías usar un shift register para que siga pasando el ultimo voltaje que le enviaste.

Prueba estas modificaciones para ver si ya no te marca el problema.

 

Salduos

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 10 de 13
4.810 Vistas