Documente Academic
Documente Profesional
Documente Cultură
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
La Serie de National Instruments de Gua de Inicio para Comenzar a Trabajar con NI-DAQmx tiene
la finalidad de ayudarle a aprender los fundamentos de la programacin NI-DAQmx. Por medio de
tutoriales en video y texto, esta serie lo gua desde verificar la operacin de su dispositivo en
Measurement and Automation Explorer (MAX) hasta programar aplicaciones de adquisicin de
datos usando NI LabVIEW. Tanto para principiantes que desean aprender cmo usar el DAQ Assistant, as como
usuarios experimentados que desean aprovechar la funcionalidad avanzada de NI-DAQmx.
1. NI-DAQmx: Reduzca Tiempo de Desarrollo y Mejore el Rendimiento
Desde el lanzamiento de NI-DAQmx, los usuarios del hardware de adquisicin de datos (DAQ) de National Instruments han
aprovechado la diferentes caractersticas diseadas para ahorrar tiempo de desarrollo y para mejorar el rendimiento de sus
aplicaciones de adquisicin de datos.
Una caracterstica que ahorra una cantidad considerable de tiempo de desarrollo es la Interfaz de Programacin de Aplicaciones
(API) de NI-DAQmx, la cual es la misma tanto en toda la funcionalidad del dispositivo y como en las familias de dispositivos. Esto
significa que toda la funcionalidad de un dispositivo multifuncin es programada con el mismo juego de funciones (entrada
analgica, salida analgica, E/S digital y contadores). Adems, un dispositivo de E/S digital y un dispositivo de salida analgica
son programados usando este mismo juego de funciones. En NI LabVIEW, esto es posible gracias al polimorfismo. Un VI
polimrfico acepta mltiples tipos de datos para una o ms terminales de entrada y/o salida. El NI-DAQmx API tambin es
consistente en todos sus entornos de programacin aplicables. Usted necesita aprender cmo usar solamente un juego de
funciones para poder programar la mayora del hardware de adquisicin de datos de National Instruments en mltiples entornos
de programacin.
Otra caracterstica de NI-DAQmx que mejora su experiencia de desarrollo es el DAQ Assistant. Esta herramienta le ayuda a crear
sus aplicaciones sin programacin a travs de una interfaz grfica para configurar tareas simples y complejas de adquisicin de
datos. Por otra, la sincronizacin, un proceso que generalmente es difcil de implementar debido a las seales de disparo y/o reloj
deben ser enrutadas manualmente, es fcil con NI-DAQmx, el cual realiza automticamente enrutado de seales entre las
diferentes reas funcionales de un solo dispositivo y entre mltiples dispositivos.
Las aplicaciones de adquisicin de datos que usted construye usando NI-DAQmx se benefician de una arquitectura diseada
para maximizar el rendimiento. Esto comienza con un modelo de estado eficiente que elimina reconfiguracin innecesaria. Al
eliminar estos gastos, se optimizan la configuracin y la adquisicin. Adems, usted puede alcanzar velocidades de E/S de un
solo punto mayores de 50 kS/s. Este nivel de rendimiento es posible debido a los registros mapeados a memoria.
Otra caracterstica importante de la arquitectura NI-DAQmx es Measurement Multithreading. Ya que NI-DAQmx es de mltiples
hilos, mltiples operaciones de adquisicin de datos pueden ocurrir simultneamente, mejorando enormemente el rendimiento de
sus aplicaciones que contienen varias operaciones. Tambin simplifica en gran medida dichas aplicaciones.
Para comenzar a aprovechar estos beneficios, usted solamente necesita aprender algunas funciones. De hecho, 10 funciones de
NI-DAQmx ofrecen la funcionalidad de resolver el 80% de las aplicaciones de adquisicin. Estas funciones se describen en
detalle para ayudarle a comprender su funcionalidad y los tipos de aplicaciones en las cuales son usados.
NOTA: Los ejemplos referenciados en este documento estn disponibles en las siguientes ubicaciones.
LabVIEW
www.ni.com
LabWindows/CVI
.NET
2. DAQ Assistant
DAQ Assistant es una interfaz grfica para crear, editar y ejecutar de forma interactiva canales virtuales y tareas NI-DAQmx. Un
canal virtual NI-DAQmx consiste de un canal fsico en un dispositivo DAQ y la informacin de configuracin para este canal fsico,
como rango de entrada y escala personalizada. Una tarea NI-DAQmx es una coleccin de canales virtuales, informacin de
temporizacin, disparos y otras propiedades relacionadas con la adquisicin o generacin. En la siguiente figura, el DAQ
Assistant est configurado para realizar una medida de galgas limitada.
Los siguientes documentos describen el uso del DAQ Assistant en NI LabVIEW, NI LabWindows/CVI y .NET:
Tutorial sobre NI-DAQmx Express VI
Usar el DAQ Assistant en NI LabWindows/CVI
Usar el DAQ Assistant en NI Measurement Studio
DAQ Assistant tambin puede generar cdigo para configurar y/o realizar la adquisicin o la generacin especificada. Este
procedimiento en NI LabVIEW se describe en la Ayuda de DAQ Assistant y en el documento Usar el DAQ Assistant para Generar
Automticamente Cdigo LabVIEW. La siguiente figura muestra una instancia del DAQ Assistant y la configuracin generada
automticamente que resulta y el cdigo ejemplo de NI LabVIEW.
2/14
www.ni.com
Ciertas aplicaciones de adquisicin de datos requieren ms flexibilidad y/o rendimiento que la que ofrece el DAQ Assistant. Estas
aplicaciones requieren las funciones NI-DAQmx simples y potentes, que se describen a continuacin.
3. NI-DAQmx Create Virtual Channel
La funcin NI-DAQmx Create Virtual Channel crea un canal virtual y lo aade a una tarea. Tambin puede ser usada para crear
mltiples canales virtuales y aadirlos a una tarea. Cuando una tarea no est especificada, la funcin crea una tarea. La funcin
NI-DAQmx Create Virtual Channel tiene numerosas instancias. Estas instancias corresponden al tipo de medida o generacin
especfica que realiza el canal virtual.
Crear un Canal en NI LabVIEW
La siguiente figura muestra cuatro ejemplos de diferentes instancias del NI-DAQmx Create Virtual Channel VI.
Las entradas de la funcin NI-DAQmx Create Virtual Channel difieren para cada instancia de la funcin. Sin embargo, ciertas
entradas son comunes para la mayora, sino todas, las instancias de la funcin. Por ejemplo, se requiere una entrada para
especificar los canales fsicos (entrada analgica y salida analgica), lneas (digitales) o contador que usarn los canales
virtuales. Adems, las operaciones de entrada analgica, salida analgica y contador usan entradas de valor mnimo y valor
mximo para configurar y optimizar las medidas y generaciones en base a los valores mnimos y mximos esperados de las
seales. Sin embargo, una escala personalizada puede ser aplicada a varios tipos de canales virtuales. En el siguiente
diagrama de bloques de NI LabVIEW, el NI-DAQmx Create Virtual Channel VI es usado para crear un canal virtual de termopar.
3/14
www.ni.com
www.ni.com
LabVIEW
CVI
.NET
WriteDigPort
ContAcqThermocoupleSamples_IntClk
4. NI-DAQmx Trigger
LibraryNI-DAQmxTriggering [CVI]
Task.Triggers Property [.NET]
La funcin NI-DAQmx Trigger configura un disparo para realizar una especificacin. Las acciones ms usadas son un disparo en
estrella y un disparo de referencia. Un disparo en estrella inicia una adquisicin o generacin. Un disparo en estrella establece
la ubicacin, en un juego de muestras adquiridas, dnde terminar los datos de pre-disparo y comienzan los datos de post-disparo.
Estos dos disparos pueden ser configurados para ocurrir en un borde digital, un borde analgico o cuando una seal analgica
entra o deja una ventana.
Crear un Disparo en NI LabVIEW
En el siguiente diagrama de bloques de NI LabVIEW, son configurados un disparo en estrella y un disparo de referencia, usando
el NI-DAQmx Trigger VI, para ocurrir en bordes digitales para una operacin de entrada analgica.
Varias aplicaciones de adquisicin de datos requieren sincronizacin de diferentes reas funcionales de un solo dispositivo (por
ejemplo, salida analgica y contadores). Otros requieren que mltiples dispositivos sean sincronizados. Para lograr esta
sincronizacin, las seales de disparo deben ser enrutadas entre las diferentes reas funcionales de un solo dispositivo y entre
mltiples dispositivos. NI-DAQmx realiza este enrutado automticamente. Al usar la funcin NI-DAQmx Trigger, todas las seales
de disparo vlidas estn disponibles como la entrada fuente a la funcin. Por ejemplo, en el siguiente NI-DAQmx Trigger VI, la
seal de disparo en estrella para Device 2 est disponible como la fuente del disparo en estrella para Device 1 sin que ningn
enrutado explcito sea realizado.
www.ni.com
En base a los parmetros enviados a la funcin ConfigureDigitalEdgeTrigger el dispositivo se ver en una lnea interna o externa
para un borde digital de incremento o cada antes de comenzar a adquirir datos. El snippet de arriba configura el dispositivo para
verse en PFO 0 para un disparo de borde digital de incremento.
Crear un Disparo en C/C++
Use la funcin DAQmxCfgDigEdgeStartTrig() para crear un disparo en estrella de borde digital. Para informacin sobre crear
diferentes disparos, vea la Ayuda de NI-DAQmx Referencia C. A continuacin est un snippet que muestra cmo usar la funcin
para un disparo en estrella digital que viene en PFI0 y que busca un borde de incremento en esa lnea.
char
int
startTrigger[256] = "Dev1/PFI0";
startEdge = 0; // rising edge
DAQmxCreateTask("",&taskHandle));
DAQmxCreateAIVoltageChan(taskHandle, chan, "", DAQmx_Val_Cfg_Default, min, max, DAQmx_Val_Volts, NULL);
DAQmxCfgDigEdgeStartTrig(taskHandle, startTrigger, startEdge);
El documento Caractersticas de Temporizacin y Sincronizacin de NI-DAQmx contiene informacin adicional referente al uso de
la funcin NI-DAQmx Trigger para realizar sincronizacin con NI-DAQmx.
Ejemplos para Examinar:
LabVIEW
CVI
.NET
AcqVoltageSamples_IntClkDigStartAndRef
ContAcqVoltageSamples_IntClkAnalogStart
5. NI-DAQmx Timing
LibraryNI-DAQmxTiming [CVI]
Task.Timing Property [.NET]
La funcin NI-DAQmx Timing configura la temporizacin para operaciones de adquisicin de datos temporizadas por hardware.
Esto incluye especificar si la operacin ser continua o limitada, seleccionar el nmero de muestreos para adquirir o generar para
operaciones limitadas y crear un bfer cuando sea necesario.
Para operaciones que requieren temporizacin (entrada analgica, salida analgica y contador), la instancia Sample Clock de la
funcin NI-DAQmx Timing establece la fuente del reloj de muestreo, el cual puede ser una fuente interna o externa y su
velocidad. El reloj de muestreo controla la velocidad a la cual los muestreos son adquiridos o generados. Cada pulso del reloj
inicia la adquisicin o generacin de un muestreo para cada canal virtual incluido en la tarea.
Configurar Temporizacin de Tareas en NI LabVIEW
El siguiente diagrama de bloques de NI LabVIEW demuestra el uso de la instancia del Reloj de Muestreo del NI-DAQmx Timing
VI para configurar una generacin de salida analgica continua con un reloj de muestreo externo.
6/14
www.ni.com
Para lograr sincronizacin en aplicaciones de adquisicin de datos, as como las seales de disparo deben estar enrutadas entre
las diferentes reas funcionales de un solo dispositivo y entre mltiples dispositivos, las seales de temporizacin tambin deben
estar enrutadas de la misma manera. NI-DAQmx tambin realiza este enrutado automticamente. Todas las seales de
temporizacin estn disponibles como la entrada fuente a la funcin NI-DAQmx Timing. Por ejemplo, en el siguiente DAQmx
Timing VI, la seal de reloj de muestreo de salida analgica del dispositivo est disponible como la fuente del reloj de muestreo
para los canales de entrada analgica, sin que ningn enrutado explcito sea realizado.
El documento Caractersticas de Temporizacin y Sincronizacin de NI-DAQmx contiene informacin adicional referente al uso de
la funcin NI-DAQmx Timing para realizar sincronizacin con NI-DAQmx.
La mayora de las operaciones de contador no requieren temporizacin de muestreo ya que la seal medida ofrece la
temporizacin. La instancia Implicit de la funcin NI-DAQmx Timing debe ser usada para estas aplicaciones. En el siguiente
diagrama de bloques de NI LabVIEW, la instancia implcita del NI-DAQmx Timing VI es usada para configurar una adquisicin de
ancho de pulso a bfer para ser limitada con un nmero especfico de muestreos.
clockSource[256] = "";
rate = 10000;
www.ni.com
Ciertos dispositivos de adquisicin de datos emplean protocolo de sincronizacin como la temporizacin de sus operaciones de
E/S digital. El Protocolo de Sincronizacin utiliza un intercambio de seales de temporizacin conocidas con un dispositivo
externo para transferir cada muestreo. La instancia Handshaking de la funcin NI-DAQmx Timing configura la temporizacin de
protocolo de sincronizacin para operaciones de E/S digital.
Ejemplos para Examinar:
LabVIEW
CVI
.NET
ContGenVoltageWfm_ExtClk
MeasBuffered_SemiPeriodFinite
Como se mencion en la Introduccin, el modelo de estado usado por NI-DAQmx elimina reconfiguracin innecesaria para
obtener un alto nivel de eficiencia e incrementar el rendimiento. Este modelo de estado consiste de cinco estados en los cuales
puede residir una tarea. Informacin detallada referente a cada uno de estos estados est disponible en la Ayuda de NI-DAQmx
en Key NI-DAQmx ConceptsTasksTask State Model.
La funcin NI-DAQmx Start Task transforma explcitamente una tarea al estado de ejecucin. En el estado de ejecucin, la tarea
realiza la adquisicin o generacin especificada. Una tarea ser transformada implcitamente al estado de ejecucin o iniciada
automticamente, si no es usada la funcin NI-DAQmx Start Task cuabdi la funcin NI-DAQmx Read se ejecuta. Esta transicin
implcita tambin ocurre si la funcin NI-DAQmx Start Task no es usada y la funcin NI-DAQmx Write se ejecuta con su entrada
automtica especificada de acuerdo a esto.
Aunque no siempre se requiere, es preferible usar la funcin NI-DAQmx Start Task para iniciar explcitamente una tarea que
involucra una adquisicin o generacin temporizada por hardware. Adems, si la funcin NI-DAQmx Read o la funcin NI-DAQmx
Write sern ejecutadas varias veces, como en un ciclo, la funcin NI-DAQmx Start Task tambin debe ser usada. De otra manera,
el rendimiento de la tarea ser reducido debido a que ser iniciada y detenida repetidamente. Informacin adicional que describe
cuando usar la funcin NI-DAQmx Start Task est disponible en la Ayuda NI-DAQmx en Key NI-DAQmx ConceptsTasks
Explicitly Starting a Task.
Iniciar una Tarea en NI LabVIEW
El siguiente diagrama de bloques de NI LabVIEW demuestra una situacin donde la funcin NI-DAQmx Start no necesita ser
usada ya que la generacin de salida analgica solamente consiste de un solo muestreo temporizado por software.
Por el contrario, el siguiente diagrama de bloques de NI LabVIEW demuestra una situacin donde la funcin NI-DAQmx Start
debera ser usada ya que la funcin NI-DAQmx Read es ejecutada varias veces para lectura desde el contador.
8/14
www.ni.com
CVI
.NET
GenDigPulseTrain_Continuous
ContAcq0_20mACurrentSamples_IntClk
7. NI-DAQmx Read
La funcin NI-DAQmx Read lee muestreos desde la tarea de adquisicin especificada. Las diferentes instancias de la funcin
toman en consideracin el tipo de adquisicin (analgica, digital o contador), el nmero de canales virtuales, el nmero de
muestreos y el tipo de datos que sern seleccionados. Una vez que el nmero de muestreos ha sido transferido desde el FIFO en
la tarjeta DAQ al Bfer de PC en RAM, la funcin NI-DAQmx Read mueve los muestreos desde le Bfer de PC a la Memoria del
Entorno de Desarrollo de Aplicaciones (ADE).
Leer Datos en NI LabVIEW
Las siguientes figuras muestran cuatro ejemplos de diferentes instancias del NI-DAQmx Read VI.
Las instancias de la funcin NI-DAQmx Read que son capaces de leer mltiples muestreos incluyen una entrada para especificar
el nmero de muestreos por canal para leer cuando la funcin se ejecuta. Para adquisiciones limitadas, al especificar un
nmero de muestreos por canal de -1, la funcin espera todos los muestreos solicitados para ser adquiridos y despus lee
estos muestreos. Especificar un nmero de muestreos por canal de -1 para una adquisicin continua da como resultado todos
los muestreos que estn disponibles en el bfer cuando la funcin se ejecuta. En el siguiente diagrama de bloques de NI
LabVIEW, el NI-DAQmx Read VI ha sido configurado para leer mltiples muestreos desde mltiples canales virtuales de entrada
analgica y regresa los datos como formas de onda. Adems, ya que la entrada del nmero de muestreos por canal ha sido
cableada a un valor constante de 10, cada vez que el VI lo ejecuta leer 10 muestreos desde cada canal virtual.
9/14
www.ni.com
cableada a un valor constante de 10, cada vez que el VI lo ejecuta leer 10 muestreos desde cada canal virtual.
CVI
One Sample
Read Dig Chan
.NET
AcqOneVoltageSample
ReadDigChan
8. NI-DAQmx Write
La funcin NI-DAQmx Write escribe muestreos desde la tarea de generacin especificada. Las diferentes instancias de la funcin
toman en consideracin el tipo de generacin (analgica o digital), el nmero de canales virtuales, el nmero de muestreos y el
tipo de datos que sern seleccionados. La funcin NI-DAQmx Write mueve muestreos desde la Memoria del Entorno de
Desarrollo de Aplicaciones (ADE) al Bfer de PC en RAM. Estos muestreos son transferidos desde el Bfer de PC al FIFO en la
tarjeta DAQ para ser generados.
Cada instancia de la funcin NI-DAQmx Write tiene una entrada de inicio automtico para determinar si la funcin iniciar la tarea
10/14
www.ni.com
Cada instancia de la funcin NI-DAQmx Write tiene una entrada de inicio automtico para determinar si la funcin iniciar la tarea
implcitamente si no ha sido iniciada explcitamente. Como se mencion anteriormente en la seccin NI-DAQmx Start Task de
este documento, la funcin NI-DAQmx Start Task debe ser usada para iniciar explcitamente una tarea de generacin que usa
temporizacin de hardware. Tambin debe ser usada para incrementar el rendimiento si la funcin NI-DAQmx Write ser
ejecutada varias veces.
Escribir Datos en NI LabVIEW
Las siguientes figuras muestran cuatro ejemplos de diferentes instancias del NI-DAQmx Write VI.
El siguiente diagrama de bloques de NI LabVIEW, para una generacin de salida analgica limitada, incluye una constante
Booleana "False" cableada al NI-DAQmx Write VI porque la generacin es temporizada por hardware. El NI-DAQmx Write VI ha
sido configurado para escribir mltiples muestreos de datos de salida analgica para un canal a la tarea como una forma de onda
analgica.
CVI
Volt Update
Write Dig Chan
.NET
GenVoltageUpdate
WriteDigChan
www.ni.com
La funcin NI-DAQmx Wait Until Done espera la operacin de adquisicin de datos para completar antes de terminar. Esta
funcin debe ser usada para asegurar que la adquisicin o generacin especificada es completada antes que la tarea sea
detenida. Lo ms comn, la funcin NI-DAQmx Wait Until Done es usada con operaciones limitadas. Una vez que la funcin ha
terminado de ejecutarse, la adquisicin o generacin limitada est completa y la tarea puede ser detenida sin alterar la operacin.
Adems, la entrada timeout permite que un tiempo de espera mximo sea especificado. Si la adquisicin o generacin no se
completa en este intervalo de tiempo, la funcin existe y es generado un error correspondiente.
Wait Until Done en LabVIEW
El NI-DAQmx Wait Until Done VI es usado en el siguiente diagrama de bloques de NI LabVIEW para verificar que la operacin de
salida analgica limitada es completada antes que la tarea sea liberada.
CVI
Dig Pulse
Mult Volt Updates-Int Clk
.NET
GenDigPulse
GenMultVoltUpdates_IntClk
La funcin NI-DAQmx Clear Task libera la tarea especificada. Si la tarea se est ejecutando, primero la funcin detiene la tarea y
despus todos sus recursos. Una vez que la tarea ha sido liberada, no puede ser usada a menos que sea recreada. De esa
manera, si una tarea ser usada otra vez, la funcin NI-DAQmx Stop Task debe ser usada para detener la tarea, pero no para
liberarla.
Para operaciones continuas, la funcin NI-DAQmx Clear Task debe ser usada para detener la adquisicin o generacin actual.
Liberar una Tarea en NI LabVIEW
En el siguiente diagrama de bloques de NI LabVIEW, una serie de pulsos continuos han sido generados con un contador. Las
series de pulsos continan siendo la salida hasta que se termina el Ciclo While y se ejecuta el NI-DAQmx Clear Task VI.
12/14
www.ni.com
CVI
.NET
ContGenVoltageWfm_IntClk
CountDigEvents
Attribute [CVI]
Property [.NET]
NI-DAQmx Properties brinda acceso a todas las propiedades asociadas con una operacin de adquisicin de datos. Estas
propiedades pueden ser establecidas al escribir en NI-DAQmx Properties y los valores actuales de las propiedades tambin se
pueden leer desde el NI-DAQmx Properties.
Varias propiedades se pueden establecer usando las funciones NI-DAQmx que se mencionaron anteriormente. Las propiedades
Sample Clock Source y Sample Clock Active Edge, por ejemplo, pueden ser establecidas usando la funcin NI-DAQmx
Timing. Sin embargo, a algunas de las propiedades menos usadas solamente se puede tener acceso a travs de NI-DAQmx
Properties.
Usar Propiedades en NI LabVIEW (Nodos de Propiedad)
En LabVIEW, un Nodo de Propiedad de NI-DAQmx puede ser usado para escribir y/o leer desde mltiples propiedades. Por
ejemplo, el siguiente Nodo de Propiedad de Temporizacin de LabVIEW NI-DAQmx establece la fuente del reloj de muestreo.
Despus, se lee la fuente del reloj de muestreo. Finalmente, se establece el flanco activo del reloj.
En el siguiente diagrama de bloques de NI LabVIEW, es usado un Nodo de Propiedad de Canal NI-DAQmx para permitir el filtro
paso bajo del hardware y despus establece la frecuencia de corte del filtro para usarse con una medida de galga
extensiomtrica.
13/14
www.ni.com
CVI
.NET
AcqStrainSamples
ContAcqAccelSamp_IntClk_AnalogStart
12. Conclusin
NI-DAQmx ahorra tiempo de desarrollo y mejora el rendimiento de las aplicaciones de adquisicin de datos. Una de las maneras
en las que NI-DAQmx ahorra tiempo de desarrollo es al proporcionar un API que requiere solamente un pequeo nmero de
funciones para exponer la mayora de sus funcionalidades. De hecho, el 80% de las aplicaciones de adquisicin de datos pueden
ser resueltas despus de aprender solamente las 10 funciones mencionadas en este documento.
14/14
www.ni.com