Discusiones sobre Productos NI

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

DeviceNet en CRio

Me complica un poco el modo hibrido, pero en FPGA para comunicar valores de cada modulo con un host, se debe usar el metodo Direct memory access o DMA FIFO, si se van a transferir un lote de datos. Este FIFO deberías crearlo en el proyecto, bajo la FPGA y configurarla como Target to Host. Luego en el RT Host creas shared variables (network-published) y te comunicas con el Host PC. 

 

Saludos !

Patricio Cortes | NI Cono Sur
0 kudos
Mensaje 11 de 13
1.439 Vistas

Hola Patricio,

 

Muchas gracias por tu ayuda, pero sigo con problemas.

 

Como me comentas para leer los datos de los distitntos modulos, los puedo meter dentro del folder de la FPGA (poniendolos así en modo FPGA Interface) y a traves de la DMA FIFO puedo intercambiar los datos leidos por mi FPGA al Host en el RT.(Lo he comprobado con el modulo NI 9421), aclaro los pasos por si ayuda a alguien:

 

  • He creado mi FIFO, Type: Target to Host-DMA y Data Type:Booleano (el modulo NI 9421 es de lectura de entradas digitales).
  • Posteriormente me he creado un subvi "FIFO_conf.vi", con un bucle escribiendo el dato leído por este módulo en mi FIFO. Lo he ejecutado la primera vez, compilándome y cargándome con ello la tarjeta FPGA.

      pero después tengo que ejecutarlo continuamente para que se actualicen las lecturas del la pila, no?? "interactive connection"....

 

  • Fuera de la FPGA en mi RealTime subvi, abro la referencia a mi Tarjeta FPGA (con el anterior fichero creado en la compilación bitfile) y comienzo el FIFO, leo los datos (los envio a PC mediante shared variable) y paro mi FIFO. ( funciona a través del FIFO para este módulo, pero no siempre, hay veces que se queda sin actualizar la salida en mi PC...??.)
  • En este subvi tengo también el modulo NI 9882, pero este modulo no puedo meterlo bajo la FPGA....luego para leo los datos directamente del propio módulo y uso "shared Variables" para leer-escribirlos en mi PC, pero no me lo hace correctamente..He probado metiendo los clusters como constantes y si que me funciona el programa (aunque tarda mucho en comenzar), luego de nuevo tengo problemas con las variables compartidas, el caso es que el problema sólo lo tengo con determinado tipo de variables. En mi caso son de tipo clusters con datos de tipo unsigned long 32 bit integer. No se pueden usar clusters??? o Cómo se debe trabajar con ellos??

 

Adjunto el programa de nuevo por si alguien tiene alguna idea de como solucionar estos problemas, y de como se gestionan los clusters en casos así, ya que en mi programa completo estoy trabajando con muchos.....

 

Un saludo y muchisimas gracias!!!

0 kudos
Mensaje 12 de 13
1.427 Vistas

Buenas,

 

Ya he encontrado cual es uno de los problemas.

En Labview 2012 no está solucionado, y al igual que en las versiones anteriores, también hay que desconectar "type definitions".

Para ello, he estado buscando y a la hora de construir el ejecutable, en "My application properties" --> "Additional Exclusions" --> "Disconnect Type definitions".

 

 

Lo que no me queda claro es cuando debe ejecutarse y cómo, el sub.vi dentro de la FPGA target ("FIFO_conf.vi"), con el bucle escribiendo el dato leído por este módulo en mi FIFO.

 

Muchas Gracias y un saludo!!!!

0 kudos
Mensaje 13 de 13
1.419 Vistas