Vous êtes sur la page 1sur 30

NO

Descripcin
El bloque Analog Input, inicializa, configura, y controla un dispositivo de
adquisicin de datos analgico. La apertura, inicializacin y configuracin del
dispositivo ocurre una vez al comienzo de la ejecucin del modelo. Durante el
tiempo de corrida del modelo, el bloque adquiere datos sincrnicamente
(reparte el bloque corriente de datos que el dispositivo est proveyendo) o
asincrnicamente (bufferea datos entrantes).
El bloque no tiene puertos de entrada. Tiene uno ms puertos de salida,
dependiendo de la configuracin que se elija en la caja de dilogos Source
Block Parameters.
El siguiente diagrama muestra el bloque configurado con un puerto para ambos
canales y con un puerto para cada canal, en el caso de un dispositivo que
tenga dos canales.

Use el Analog Input block para incorporar datos medidos en vivo en Simulink para:

Caracterizacin de Sistema

Verificacin de algoritmo

Modelamiento de sistema y algoritmo

Modelar y validar diseo

Diseo de controles

Se puede usar el Analog Input block para aplicaciones de seal usndolo en conjuncin
con Simulink bsico y bloques de Procesamiento de Seal.
Se puede usar el Analog Input block tanto sincrnicamente como asincrnicamente.
Selecciones el modo de adquisicin en la caja de dilogo Source Block Parameters.
El siguiente diagrama muestra el escenario de uso bsico del analog input, en la cual
debera:

Adquirir datos en cada etapa de tiempo o una vez por ejecucin del modelo.

Analizar los datos, o usarlos como una entrada a un sistema en el modelo.

Opcionalmente visualizar resultados.

PROBAR LOS ALGORITMOS EN MATLAB

Es conveniente utilizar Matlab para comprobar el funcionamiento de


la entrada de sonido, y tambin para probar los algoritmos de
deteccin de los silbidos antes de implementarlos en C.
Las siguientes funcionalidades ayudan:
Almacenar en archivo de texto y leer desde Matlab:
En el programa en C se van almacenando los datos ledos en un
archivo de texto (ej: sonido.txt) desde la funcin waveInProc().
En Matlab se puede leer y utilizar de forma sencilla los datos de ese
archivo con las rdenes:
[A,FS,NBITS,OPTS]=wavread(c:\windows\media\ding.wav);
% Para obtener la frecuencia de muestreo
frecmuestreo=FS;
B=A(1:20191);
save c:\datos\ding.txt B ascii
load c:\datos\ding.txt ; sonido=ding;
plot(sonido);
specgram(ding,[],frecmuestreo);
Esta ltima orden es interesante porque muestra un espectrograma,
esto es, la evolucin de la distribucin frecuencial a lo largo del
tiempo, con lo que fcilmente podemos comprobar qu frecuencias
son interesantes en cada momento.
E/S de sonido desde Matlab:
Si se tiene instalado el toolbox de adquisicin de datos (daq), se
pueden utilizar las siguientes funciones para leer del micrfono y
enviar a los altavoces directamente desde Matlab:

Soundin.m
function data=soundin(duration,samplerate)
% function data=soundin(duration,samplerate=8000)
% lee datos del micrfono
% duration = duracion en segundos
% samplerate = frecuencia de muestreo en Hz (8000 por
defecto)
if (exist('samplerate')), samplerate=8000;
elseif isempty(samplerate)
samplerate=8000;
end
ai=analoginput('winsound');

addchannel(ai,1);
set(ai,'StandardSampleRates','off');
set(ai,'SampleRate',samplerate);
set(ai,'SamplesPerTrigger',duration*samplerate);
input('Pulse tecla para grabar');
start(ai);
waittilstop(ai,duration*1.1);
disp('Grabacion terminada');
data=getdata(ai);
delete(ai);
soundout.m
function soundout(data,samplerate)
% function soundout(data,samplerate=8000)
% envia datos a los altavoces
% data = tabla de datos entre -1 y 1
% samplerate = frecuencia de muestreo en Hz (8000 por
defecto)
if (exist('samplerate'))
samplerate=8000;
elseif isempty(samplerate)
samplerate=8000;
end
ao=analogoutput('winsound');
addchannel(ao,1);
set(ao,'StandardSampleRates','off');
set(ao,'SampleRate',samplerate);
putdata(ao,data);
start(ao);
duration=length(data)/samplerate;
waittilstop(ao,duration*1.1);
delete(ao);
% para poner un seno de 300 Hz, muestreado
% a 8000 Hz
i=1:100000;data(i)=sin(2*pi*300*(i-1)/8000);
function saca_senial(data,samplerate)
%%Open the analog device and channels
AO = analogoutput('winsound',0);

chan = addchannel(AO,1);
%% Set the sample rate and how long we will send data for
%% 8,000 Hz
% duration = 10
duration=length(data)/samplerate;
SampleRate = 8000;
set(AO,'SampleRate',SampleRate)
set(AO,'TriggerType','Manual')
NumSamples = SampleRate*duration;
%% Put the data in the buffer, start the device, and
% trigger
putdata(AO,data)
start(AO)
trigger(AO)
%% clean up, close down
waittilstop(AO,15)
delete(AO)
clear AO
ATENCIN: Cuando se tiene instalado un modem adems
de la tarjeta de sonido, es posible que el primero sea
reconocido como dispositivo de audio por defecto. En tal
caso la E/S no funcionara bien. Para comprobarlo, se puede
ejecutar la orden:
daqhwinfo('winsound')
La cual devolver una respuesta como:
ans =
AdaptorDllName:'C:\MATLAB6p5p1\toolbox\daq\daq\private\mwwinsound.dll'
AdaptorDllVersion: 'Version 2.2
(R13) 28-Jun-2002'
AdaptorName: 'winsound'
BoardNames: {'Lnea #0 del mdem'
'Auricular #0 del mdem'
'Creative
SB AudioPCI'}
InstalledBoardIds: {'0'
'1'
'2'}
ObjectConstructorName: {3x2 cell}

El dispositivo que se abrir por defecto es el indicado en el

boardName con identificador 0, en este caso la linea #0 del


modem.
Para que, en este caso, utilice el dispositivo 2 (la tarjeta de
sonido), deberemos aadir ese valor como 2 parmetro en
las funciones analoginput y analogoutput de los ejemplos
anteriores:
ai=analoginput('winsound',2);
ao=analogoutput('winsound',2);
card.pdf

5. Salida Analgica
Aparte de adquirir datos desde sensores externos con
MATLAB, se puede desear enviar datos hacia afuera a un
dispositivo externo, por ejemplo se puede desear controlar
un pequeo motor, encender una luz, activar un parlante
(en el caso de la tarjeta de sonido).
Los comandos para sacar una seal analgica son similares
a los usados para adquirir datos. El siguiente programa
enviar una omda seno a 500 Hz al canal de salida
analgico 1 por un segundo.
%% Abre el dispositivo analgico y canales
AO = analogoutput('winsound',0);
chan = addchannel(AO,1);
%% Pone la tasa de muestreo y cunto de largo
%% sern los datos enviados
%% 44,100 Hz, 1 segundos de datos
duration = 1;
SampleRate = 44100;
set(AO,'SampleRate',SampleRate)
set(AO,'TriggerType','Manual')
NumSamples = SampleRate*duration;
%% Crea una seal a enviar, onda seno de 500 Hz
x = linspace(0,2*pi*500,NumSamples);
data = sin(x)';
%% Pone los datos en el buffer, arranca el %%
dispositivo, y trigger
putdata(AO,data)
start(AO)

trigger(AO)
%% clean up, apaga
waittilstop(AO,5)
delete(AO)
clear AO
El programa trabaja como sigue: Se comienza abriendo el
dispositivo definiendo los canales que sern usados. Los
canales 1 y 2 corresponden a los parlantes izquierdo y
derecho sobre la laptop. Luego se define cun largo sern
los datos a enviar y a qu tasa (44100 Hz por 1 segundo).
Se pone el trigger a manual. Luego, se crean los datos que
se desean enviar, una onda seno de 500 Hz durante 1
segundo.
Una vez que se crean los datos se ponen en el buffer de
salida, luego se arranca la corrida del dispositivo, y trigger
la salida. Es slo en el comando trigger que la seal es
sacada de la tarjeta de sonido.
Finalmente, se limpia y apaga el dispositivo como antes.
6. Seteo de las condiciones de Trigger
Hay muchas veces que se desea timar datos slo cuando
sucede un evento particular (por ejemplo, el sistema
responder slo cuando la seal de entrada excede un
cierto nivel).
In the previous exercise you saw that with the manual
trigger you
were not able to start the devices simultaneously and there
was a dead time when
Data Acquisition 7
the signal was being sent but the input channel was not yet
triggered. One way to
remedy this delay is to use software triggers rather than
manual triggers.
In setting a software trigger condition you must rst set the
trigger type to
be Software, rather than Manual. You must also specify
which channel you will

be triggering o, if more than one channel is dened.


Finally, you must specify
the condition that must be met to invoke the trigger. As an
example we initialize
two channels and use the second one as the trigger. We will
trigger when the signal
passes through 0.1 volts from below (i.e. you must specify
whether the signal should
fall through one volt or rise through it).
AI = analoginput('winsound',0);
chan = addchannel(AI,[1 2]);
set(AI,'TriggerChannel',chan(2))
set(AI,'TriggerType','Software')
set(AI,'TriggerCondition','Rising')
set(AI,'TriggerConditionValue',0.1)
You may want to experiment with the 'Timeout' property.
This property tells
the program how long to hold before the program gives up
waiting for the trigger
condition. The default is only one second, so you may want
to make this time longer.
Exercise DAT 3: Using the program written in Exercise 2 as
a starting
point, you will modify the program to use software triggers.
Modify the
program to send a sinusoidal signal to the output while
setting a trigger
condition on the input channel. Plot the input data. Did the
trigger
work? Did the command time out? If the command timed
out try setting
a lower threshold or making the amplitude of the output
signal louder.
Try setting the trigger condition value higher and use a clap
to initiate
data acquisition.
7. Using the Measurement Computing Data Acquistion PC
Card
Using the Measurement Computing data acquisition cards is
fundamentally no

dierent than the commands that were used for the sound
card. There are a few
dierences in the details that we will elaborate here.
The DAQ card that we are using has 16 channels for analog
input, this means
that we can acquire information from 16 simultaneous
instruments in single-ended
mode or 8 measurements in dierential mode (see the web
tutorial for the dierence
between single-ended and dierential measurement). If
you are operating the card
in dierential mode the card channels range from Channel
0 to Channel 7. We
have noticed that when acquiring data to two simultaneous
channels that the code
may not work if the sample rate is below 1000 Hz. This is
clearly a bug and has
been reported to MathWorks. However, if you have trouble
acquiring data to two
simultaneous channels try adjusting the sample rate.
To initialize our DAQ card for analog input use the following
command
AI = analoginput('mcc',1);
This command works the same as before, only we are
dening a dierent piece of

Communication with external devices


Sound card
Requires data acquisition toolbox
Make sure that proper device is set in sound recorder. If
using external signal, choose Microphone input.
1) Open device
2) Add channels

3) Configure property values


4) Acquire data
5) Close device
>> ai = analoginput('winsound');
>> addchannel(ai,1:2);
>> rate=44100; time=5;
>>
set(ai,'SampleRate',rate,'SamplesPerTrigger',rate*time);
>> start(ai); data = getdata(ai); delete(ai);
>> sound(data,rate)
External devices can be connected to the microphone input
and that data can be captured.
Sound card acquires only AC signal.
If sound from a CD player is captured, make sure to select
CD player as the source of sound.
>> !sndvol32 &
CD player can be started from Matlab:
>> !cdplayer &
Sound card can be used to output the signal, for example
>> ao = analogoutput('winsound'); % Use analogoutput
function
>> addchannel(ao,1:2);
>> set(ao,'SampleRate',rate);
>> freq=500;
>> data = sin(linspace(0,2*pi*freq*time,rate*time)');
>> putdata(ao,[data data])
>> start(ao)
>> delete(ao)
Parallel port
Tambin necesita Data Acquisition Toolbox
Use la function daqhwinfo para visualizar la informacin del
hard del data acquisition:
out = daqhwinfo('adaptor')
'adaptor' - The hardware driver adaptor name.

The supported adaptors are hpe1432, keithley, mcc, nidaq,


parallel, and winsound. Example:
>> daqhwinfo('parallel')
ans =
AdaptorDllName: 'C:\MATLAB\toolbox\daq\daq\private\mwparallel.dll'
AdaptorDllVersion: 'Version 2.2 (R13) 28-Jun-2002'
AdaptorName: 'parallel'
BoardNames: {'PC Parallel Port Hardware'}
InstalledBoardIds: {'LPT1'}
ObjectConstructorName: {'' '' 'digitalio('parallel','LPT1')'}

Para usar Puerto paralelo, se necesita abrir el pueto con la


funcin digitalio
DIO1 = digitalio('parallel','LPT1');
Despus se necesita agregar lneas al dispositivo IO. Por
ejemplo:
in_lines = addline(DIO1, 0:7, 0, 'in');
El Puerto paralelo consiste de 8 lneas de dato, cuatro lneas
de control, 5 lneas de status, y 8 lneas de masa.
En uso normal, las lneas son controladas por el software
del host computer y el dispositivo perifrico siguiendo un
protocolo tal como IEEE Standard 1284-1994.
El protocolo define procedimientos para transferir datos
tales como handshaking, retornando informacin de status,
y as siguiendo.
Sin embargo, el toolbox usa el Puerto paralelo como un
dispositivo bsico digital I/O, y no necesita singn
protocolo. Por lo tanto, se puede usar el puerto para
ingresar y sacar valores digitales tal como se hara con un
subsistema tipico DIO.
Para acceder a las lneas fsicas del puero paralelo, muchas
PCs vienen equipadas con un conector hembra de 25
pines, el cual se muestra debajo.

Las lneas usan niveles lgicos TTL. Una lnea est en alto
(verdad) cuando est en un nivel TTL alto, mientras que
una lnea est baja (falso) cuando est en un nivel TTL
bajo.
Las excepciones son las lneas 1, 11, 14, y 17, las cuales
son hardware inverted. El toolbox agrupa las 17 lneas
nonground en tres puertos separados.
Los IDs de puerto y los nmeros de pin asociados estn
dados debajo.
ID de Puerto
0

Pines
2-9

1
2

10-13 y15
1,14,16 y 17

Descripcin
8 lneas I/O con el pin 9 como el bit ms
significativo (MSB)
5 lneas de entrada usadas para status
4 lneas I/O usadas para control

Note que aunque las lneas Puerto 0 pueden se usadas para


entrar y sacar datos, usualmente Matlab no cambia el valor
del bit que es responsable para datos I/O bi-direccionales.
An no se sabe cmo resolver este problema con XP. Con
computadoras W2k, el programa llamado parmon puede
ser usado para poner el bit 5 @ Puerto 2 al valor 1.
Los datos son coleccionados usando la funcin getvalue
dat = getvalue(parallel_input_handle);
Los datos digitales pueden ser sacados con putvalue
putvalue(parallel_output_handle,data);
o
putvalue(dio.Line(1:8),data)
Termina con clean up:
delete(dio)
Considere com un ejemplo de uso de Puerto paralelo a
compensator_change.m function.
Serial port

1) Create or find serial object. Create: serial function.


Finding: instrfind function.
2) Set up communication parameters. Use set function.
3) Open serial port w/ fopen.
4) I/O with fwrite or fread.
5) Close and delete port!
Examples: tds.m and metex.m
Image capture
Requires image acquisition toolbox
1) Identify (select) video adapter. imaqhwinfo function
2) Identify (select) video mode and create appropriate
object. vid=videoinput('winvideo',adapter_num);
3) Get data either with data=getsnapshot(vid); or by using
triggered events (see example below)
4) Stop video capture, delete video object
As examples consider video_select.m and waveguide1.m
files
___________________________________________
Data Acquisition Toolbox
Componentes del Toolbox
El Data Acquisition Toolbox consiste de tres distintos
componentes: Funciones M-file, la mquina de adquisicin
de datos, y los drivers adaptadores del hard. Como se
nuestra abajo, estos componentes permiten pasar
informacin entre Matlab y el hard de adquisicin de datos.

El diagrama precedente ilustra cmo la informacin fluye


desde componente a componente. La informacin consiste
de:
Property values
Se puede controlar el comportamiento de su aplicacin de
adquisicin de datos configurando los property values. En
general, se puede imaginar una propiedad como una
caracterstica del Toolbox o del driver de hard que puede
ser manipulada para adecuar a las necesidades del usuario.
Datos
Se pueden adquirir datos desde un sensor conectado a un
subsistema de entrada analgica y almacenarlos en Matlab,
o sacar los datos desde Matlab al actuador conectado a un
subsistema de salida analgico. Adicionalmente se pueden
transferir valores (1s y 0s) entre Matlab y un subsistema
digital I/O.
Eventos
Un evento ocurre en un instante particular despus que una
condicin se ha cumplido y puede resultar en uno o ms
callbacks que especifique el usuario. Los eventos slo
pueden ser generados despus de configurar las
propiedades asociadas. Algunas de las formas que se
pueden usar eventos incluyen anlisis de iniciacin despus
que una predeterminada cantidad de datos se ha adquirido,

o visualizar un mensaje al workspace de Matlab despus de


la ocurrencia de un error.
Funciones M-File
Para realizar cualquier tarea con la aplicacin de adquisicin
de datos, se deben llamar funciones M-file desde el
contexto Matlab. Entre otras cosas, estas funciones
permiten
Crear device objects, los cuales proveen un puente a
las capacidades de hard y permiten controlar el
comportamiento de la aplicacin.
Adquirir o sacar datos.
Configurar property values.
Evaluar status de adquisicin y recursos hard.
Se pueden visualizar todas la funciones del Data Acquisition
Toolbox tipeando:
help daq
La mquina de adquisicin de datos
La mquina de adquisicin de datos (o slo mquina) es
una DLL Mex-file que
Almacena los device objects y valores de propiedad
asociados que controlan la aplicacin de adquisicin de
datos.
Controla la sincronizacin de eventos
Controla el almacenado de los datos adquiridos o en
cola.
Mientras que la mquina realiza estas tareas, se puede usar
Matlab para otras tareas tales como el anlisis de los datos
adquiridos. En otras palabras, la mquina y Matlab son
asncronos.
La relacin entre la adquisicin de datos, salida de datos y
flujo de datos se describe debajo.
El flujo de Datos Adquiridos

Dato adquirido significa que el dato est fluyendo desde el


dispositivo de hard en la mquina adquisidora donde est
temporariamente almacenado en la memoria. El dato se
almacena temporariamente debido a que puede ser
reescrito. La tasa a la cual el dato es sobrescrito depende
de varios factores incluyendo la memoria disponible, la tasa
a la cual el dato es adquirido, y el nmero de canales hard
desde el cual el datos es adquirido.
El dato almacenado no est automticamente disponible en
el workspace Matlab. En su lugar, se debe extraer
explcitamente el dato desde la mquina usando la funcin
getdata.
El flujo de datos adquiridos consiste de estos dos pasos
independientes:
El dato adquirido desde el hard es almacenado en la
mquina.
El dato es extrado desde la mquina y almacenado en
Matlab, o sacado a un archivo de disco.
Estos dos pasos se ilustran debajo.

El flujo de Datos Sacados


Sacar datos significa que el dato est fluyendo desde la
mquina de adquisicin de datos al dispositivo hard. Sin
embargo, antes que el dato sea sacado, se debe poner en
cola en la mquina con la funcin putdata.

La cantidad de datos que se pueden poner en cola depende


de varios factores incluyendo memoria disponibles, el
nmero de canales hard para los cuales el dato es sacado,
y el tamao de cada muestra de dato.
El flujo de salida de datos consiste de estos dos pasos
independientes:
El Dato desde MATLAB es puesto en cola en la mquina.
El dato en cola en la mquina es sacado al hard.
Estos dos pasos son ilustrados debajo.

El driver adaptador de Hardware


El

driver adaptador de Hardware (o simplemente


adaptador) es la interfaz entre la mquina adquisidora
de datos y el driver de hard.
El propsito principal del adaptador es pasar imformacin
entre Matlab y su dispositivo hard por la va de sus drivers.
Los Hardware drivers son provistos por el fabricante. Por
ejemplo, para adquirir datos usando una tarjeta National
Instruments, la versin apropiada del driver NI-DAQ debe
ser instalada sobre su plataformaLos Hardware drivers no son instalados como parte del
Toolbox con la excepcin de un driver especial de puerto
paralelo que permite acceder a las direcciones de memoria
protegidas del puerto. Adicionalmente, un driver adecuado
es usualmente instalado sobre las PCs que estn equipadas

con una tarjeta de sonido. Para los dispositivos soportados


remanentes, los drivers deben ser instalados.
Los tipos dispositivo/fabricante y los nombres de adaptador
usados por el Toolbox se listan debajo.

Se puede listar los nombres de adaptador con la funcin


daqhwinfo.
Accediendo al Hardware
Quizs la forma ms efectiva de arrancar con el Data
Acquisition Toolbox es conectar a su hard, y datos de
entrada o salida. Esta seccin provee ejemplos simples que
le mostrarn como
Adquirir datos desde los canales de entrada
analgicos.
Sacar datos a los canales analgicos de salida.
Leer valores desde y escribir valores a lneas I/O
digitales.
Cada ejemplo ilustra una sesin tpica de adquisicin de
datos. La sesin comprende todas las etapas que
probablemente tomara cuando adquiere o saca datos
usando un dispositivo hard soportado.
Debera mantener en mente estos pasos cuando construya
sus propias aplicaciones adquisidoras de datos. Note que
los ejemplos de entrada y salida analgica usan una tarjeta
de sonido, mientras que el ejemplo digital I/O usa una
tarjeta National Instruments PCI-6024E.

Si se est usando un dispositivo diferente, deber modificar


el nombre del adaptador y el ID de dispositivo suministrado
para la funcin de creacin que sea necesaria.
Adquisicin de Datos
Si se tiene instalada una tarjeta de sonido, se puede correr
el siguiente ejemplo, el cual adquiere un segundo de datos
desde dos canales hard de entrada analgicos, y luego
grafica los datos adquiridos. Se deber modificar este
ejemplo para adecuar a las necesidades de aplicacin
especficas.
1 - Crear un device object Crea el objeto entrada
analgica ai para una tarjeta de sonido.
ai = analoginput('winsound');
2 - Agregar canales Agrega dos canales hard ai.
addchannel(ai,1:2);
_________________________________________________________________
CHANS = ADDCHANNEL(OBJ, HWCH) agrega un arreglo de canales, la longitud del
vector HWCH, para entrada analgica o salida al objeto OBJ. Los canales son
asignados a los canales hard especificados en el vector HWCH. El arreglo de canal
es retornado a CHANS. OBJ debe ser 1-por-1.

3 - Configurar property values Configura la tasa de


muestreo a 44.1 kHz y colecta 1 segundo de datos (44,100
muestras) por cada canal.
set(ai,'SampleRate',44100)
set(ai,'SamplesPerTrigger',44100)
4 - Adquirir datos Arranca la adquisicin. Cuando todos
los datos son adquiridos, , ai automticamente para la
ejecucin.
start(ai)
data = getdata(ai);
plot(data)

5 - Clean up Cuando ya no se necesita ai, se debe


remover desde la memoria y desde el wokspace de
MATLAB.
delete(ai)
clear ai
Sacando datos
Si se tiene una tarjeta de sonido instalada, se puede correr
el siguiente ejemplo, el cual saca 1 segundo de datos a dos
canales hard de salida analgica. Se deber modificar este
ejemplo para adecuarlo a sus necesidades especficas de
aplicacin.
1 - Crear un device object Crea el objeto entrada
analgica ao para una tarjeta de sonido.
ao = analogoutput('winsound');
2 - Agregar canales Agrega dos canales hard ao.
addchannel(ao,1:2);
3 - Configurar property values Configura la tasa de
muestreo a 44.1 kHz para cada canal.
set(ao,'SampleRate',44100)
4 - Sacar datos -- Crear 1 segundo de datos de salida, y
ponerlos en cola en la mquina para eventual salida al
subsistema de salida analgica. Se debe poner en cola una
columna de datos por cada canal de hard agregado.
data = sin(linspace(0,2*pi*500,44100)');
putdata(ao,[data data])
5 Arrancar la salida. Cuando todos los datos son
sacados, ao automticamente para de ejecutar.
start(ao)

6 - Clean up Cuando ya no se necesita ao, se deber


remover desde el workspace MATLAB.
delete(ao)
clear ao
Leer y escribir valores digitales
If you have a supported National Instruments board with at
least eight digital I/O lines, you can run the following
example, which outputs digital values, and then reads back
those values.
You should modify this example to suit your specific
application needs. If you want detailed information about
reading and writing digital values, refer to Digital
Input/Output.
1 - Create a device object -- Create the digital I/O object
dio for a National Instruments PCI-6024E board with
hardware ID 1.
dio = digitalio('nidaq',1);
2 - Add lines -- Add eight hardware lines to dio, and
configure them for output.
Addline(dio,0:7,out);
3 - Read and write values -- Create an array of output
values, and write the values to the digital I/O subsystem.
Note that reading and writing digital I/O line values
typically does not require that you configure specific
property values.
pval = [1 1 1 1 0 1 0 1];
putvalue(dio,pval)
gval = getvalue(dio);
4 - Clean up -- When you no longer need dio, you should
remove it from memory and from the MATLAB workspace.
delete(dio)
clear dio
Note
Digital line values are usually not transferred at a
specific rate. Although some specialized boards support
clocked I/O, the Data Acquisition Toolbox does not support
this functionality

Comprendiendo las capacidades del Toolbox


Adems de la documentacin impresa y on-line, el Data
Acquisition Toolbox provee estos recursos para ayudar a
comprender las capacidades del producto:

Los M-files de contenidos


Ejemplos documentados
La Quick Reference Guide
Demos

Los M-files de contenidos


Los M-files de contenidos listan las funciones toolbox y
demos. Se puede visualizar la informacin tecleando
help daq
Ejemplos de Documentacin
Esta gua provee ejemplos detallados que muestran cmo
adquirir o sacar datos. Estos ejemplos son coleccionados en
el example index, el cual est disponible a travs del Help
browser.
Algunos ejemplos estn construidos como miniaplicaciones
que ilustran una o dos importantes caractersticas del
toolbox y sirven como estructuras que pueden ser vistas
como para construir aplicaciones que se adecuen a sus
necesidades especficas.
Estos ejemplos estn incluidos M-files del toolbox y son
tratados como demos. Se puede listar todos los demos del
Data Acquisition Toolbox tecleando
help daqdemos
Toda documentacin M-file ejemplo comienza con daqdoc.
Para correr un ejemplo, teclee el nombre del M-file en la
lnea de comando.
Note que muchos ejemplos de entrada analgica (AI) y
salida analgica (AO) estn escritos para tarjetas de sonido.
Para usar estos ejemplos con su dispositivo hard, deber

modificar el nombre del adaptador y el ID de dispositivo


suministrado a la funcin de creacin si es necesario.
Adicionalmente, muchos ejemplos de documentacin estn
escritos para subsistemas clockeados. Sin embargo,
algunos dispositivos hard soportados particularmente
dispositivos Measurement Computing no poseen clocks en
la tarjeta. Si el subsistema AI o AO de su dispositivo hard
no tiene un clock en la tarjeta, entonces estos ejemplos no
trabajarn.
Para usar los ejemplos de documentacin se puede:
Ingresar valores nicos usando la funcin getsample,
o sacar valores nicos usando la funcin putsample.
Configurar la propiedad ClockSource a Software.
La Quick Reference Guide
La Quick Reference Guide provee una visin completa de
las capacidades del toolbox, funciones y propiedades. Se
puede acceder a ella a travs del Help browser.
Demos
El toolbox incluye una gran coleccin de demos tutoriales, a
los cuales pueden se puede acceder a travs del Help
browser Demos pane. Se usa el siguiente comando para
abrir el Help browser para los demos del toolbox
demo toolbox 'Data Acquisition'
Note que los tutoriales de entrada analgica y salida
analgica requieren tener una tarjeta de sonido instalada,
Los tutoriales digital I/O requieren tener una tarjeta
National Instruments soportada con capacidades digital I/O.
Examinando su recursos de Hardware
Se puede examinar los recursos del hard adquisidor de
datos visibles al toolbox con la funcin daqhwinfo.
Los recursos de hard incluyen las tarjetas instaladas,
drivers de hard y adaptadores. La informacin retornada

por daqhwinfo depende de los argumentos suministrados y


est dividida en estas tres categoras:
Informacin general del toolbox
Informacin del adaptador especfico
Informacin del objeto Device
Si el usuario configura los parmetros hard usando un tool
de fabricante tal como National Instruments' Measurement
y Automation Explorer o Measurement Computings'
InstaCal, daqhwinfo retornar esta informacin de
configuracin.
Informacin general del toolbox
Para visualizar la informacin generalacerca del Data
Acquisition Toolbox:
out = daqhwinfo
out =
ToolboxName:
ToolboxVersion:
MATLABVersion:
InstalledAdaptors:

'Data Acquisition Toolbox'


'2.2 (R13)'
'6.5 (R13)'
{4x1 cell}

El campo InstalledAdaptors lista los drivers adaptadores de


hardware instalados en el sistema. Para visualizarlos:
out.InstalledAdaptors
ans =
'mcc'
'nidaq'
'parallel'
'winsound'
Esta informacin indica que estn disponibles adaptadores
para dispositivos Measurement Computing y National
Instruments, puertos paralelos, y tarjetas de sonido.
Informacin especfica del adaptador

Para visualizar informacin de hard para un fabricante en


particular, se debe suministrar un nombre de adaptador
como un argumento a daqhwinfo. Los fabricantes
soportados y nombres de adaptadores estn dados en el
Hardware Driver Adaptor. Por ejemplo, para visualizar
informacin de hard para el adaptador winsound
out = daqhwinfo('winsound')
out =
AdaptorDllName:
'd:\v6\toolbox\daq\daq\private\mwwinsound.dll'
AdaptorDllVersion: 'Version 2.2
(R13) 01-Jul2002'
AdaptorName: 'winsound'
BoardNames: {'AudioPCI Record'}
InstalledBoardIds: {'0'}
ObjectConstructorName:
{'analoginput('winsound',0)'[1x26 char]}
El campo ObjectConstructorName lista los subsistemas
soportados por las tarjetas de sonido instaladas, y la
sintaxis para crear un objeto device asociado con un
subsistema dado. Para visualizar los nombres del objeto
device constructor disponibles para la tarjeta AudioPCI
Record
out.ObjectConstructorName(:)
ans =
'analoginput('winsound',0)'
'analogoutput('winsound',0)'
Esta informacin indica que la tarjeta de sonido soporta
objetos entrada analgica y salida analgica. Para crear un
objeto entrada analgica para la tarjeta de sonido:
ai = analoginput('winsound');
Para crear un objetosalida analgica para la tarjeta de
sonido
ao = analogoutput('winsound');

Informacin del objeto Device


Para visualizar informacin de hardware para un objeto
device especfico, se debe suministrar el objeto device
como un argumento a daqhwinfo.
La informacin de hardware para el objeto de entrada
analgica ai creado en la seccin anterior est dada debajo.
out = daqhwinfo(ai)
out =
AdaptorName: 'winsound'
Bits: 16
Coupling: {'AC Coupled'}
DeviceName: 'AudioPCI Record'
DifferentialIDs: []
Gains: []
ID: '0'
InputRanges: [-1 1]
MaxSampleRate: 44100
MinSampleRate: 8000
NativeDataType: 'int16'
Polarity: {'Bipolar'}
SampleType: 'SimultaneousSample'
SingleEndedIDs: [1 2]
SubsystemType: 'AnalogInput'
TotalChannels: 2
VendorDriverDescription: 'Windows Multimedia
Driver'
VendorDriverVersion: '5.0'
Entre otras cosas, esta informacin indica que la mnima
tasa de muestreo es 8KHz, la mxima es 44.1 kHz, y hay
dos canales hard que se pueden agregar al objeto entrada
analgica.
Alternativamente, se puede retornar informacin de hard
por va del Workspace browser por cliqueo-derecho de un
objeto device, y seleccionando Explore -> Display Hardware
Info desde el men contexto
La funcin daqhelp
Se puede usar esta funcin para

Visualizar la lnea de comando de ayuda para


funciones y propiedades
Listar todas las funciones y propiedades asociadas con
un objeto device especfico
Un objeto device no necesita existir para obtener esta
informacin. Por ejemplo, para vusualizar todas las
funciones y propiedades asociadas con un objeto entrada
analgica, as tambin como el constructor M-file help
daqhelp analoginput
para visualizar el help para la propiedad SampleRate
daqhelp SampleRate
Se puede visualizar el help para un objeto device existente.
Por ejemplo, para visualizar el help para la propiedad
BitsPerSample para un objeto entrada analgica asociado
con una tarjeta de sonido
ai = analoginput('winsound');
out = daqhelp(ai,'BitsPerSample');
Alternativamente, se puede visualizar el help por va del
Workspace browser por right-clicking un objeto device, y
seleccionando Explore -> DAQ Help desde el men de
contexto
La funcin propinfo
Se puede usar la funcin propinfo para retornar las
caractersticas de propiedades del Data Acquisition Toolbox.
Por ejemplo, se puede encontrar el valor default para
cualquier propiedad usando esta funcin. propinfo retorna
una estructura conteniendo los campos mostrados en la
Tabla 2-2.
La sesin Data Acquisition
Esta sesin consiste de todos los pasos para ingresar y
sacar datos. Los mismos son:

1 Crear un objeto device Se crea un objeto device


usando las funciones de creacin analogoutput, o digitalio
Los objetos device son los elementos bsicos del toolbox
que se usan para acceder al dispositivo hard.
2 Agregar canales o lneas Despus de crear el
objeto device, se le deben agregar canales o lneas. Los
canales son agregados a objetos entrada analgica y salida
analgica, mientras que las lneas son agregadas a objetos
digital I/O. Los canales y las lneas son los elementos
device bsicos de hardware con los cuales adquirir o sacar
datos.
3 Configurar propiedades Para establecer el
comportamiento del objeto device, se asinan valores a las
propiedades usando la funcin set o notacin de punto. Se
pueden configurar muchas de las propiedades en cualquier
momento. Sin embargo, algunas son configurables slo
cuando el objeto device no est corriendo. Por el contrario,
dependiendo de los seteos del hard y los requerimientos de
la aplicacin, se puede ser capaz de aceptar los valores de
propiedad default y saltear este paso.
5 Adquirir o sacar datos -- Para esto se debe ejecutar
el objeto device con la funcin start. Mientras que el objeto
device est corriendo, se comporta de acuerdo a los valores
de propiedad previamente configurados. Despus que el
dato es adquirido, se debe extraerlo desde la mquina con
la funcin getdata. Antes de sacar el dato, debe ponerlo en
cola en la mquina con la funcin putdata.
6 - Clean up - Cuando ya no se necesita el objeto device,
se deber removerlo de la memoria usando la funcin
delete, y removerlo del workspace Matlab usando el
comando clear.
La sesin adquisicin de datos es usada en mucjos de los
ejemplos de documentacin incluidos en esta gua. Note
que el cuarto paso es tratado en forma diferente para
objetos digital I/O debido a que ellos no almacenan datos
en la mquina.
Ejemplo: La Sesin Data Acquisition

Este ejemplo ilustra los pasos bsicos a tomar durante una


sesin de adquisicin de datos usando un objeto entrada
analgica. Se puede correr este ejemplo tecleando
daqdoc3_1 en la lneas de comando Matlab.
1 - Crear a objeto device Crea el objeto de entrada
analgico AI para una tarjeta de sonido. Los adaptadores
instalados y los Ids de hardware son encontrados con
daqhwinfo.
AI = analoginput('winsound');
%AI = analoginput('nidaq',1);
%AI = analoginput('mcc',1);
2 Agrega canales Agrega dos canales a AI.
addchannel(AI,1:2);
%addchannel(AI,0:1); % For NI and MCC
3 Configura valores de propiedad Configura la tasa
de muestreo a 11.025 kHz y define una adquisicin de 2
segundos.
set(AI,'SampleRate',11025)
set(AI,'SamplesPerTrigger',22050)
4 Adquiere datos -- Arranca AI y extrae todos los datos
desde la mquina. Antes que el arranque sea indicado, se
puede comenzar a ingresar datos desde un micrfono o una
grabadora de CD.
start(AI)
data = getdata(AI);
5 Grafica los datos y etiqueta los ejes de la figura.
plot(data)
xlabel('Samples')
ylabel('Signal (Volts)')

6 - Clean up Cuando ya no se necesita AI, deber


removerlo de la memoria y desde el wokspace de Matlab.
delete(AI)
clear AI
Crear un objeto Device
Device objects are the toolbox components you use to
access your hardware device. They provide a gateway to
the functionality of your hardware, and allow you to control
the behavior of your data acquisition application. Each
device object is associated with a specific hardware
subsystem. To create a device object, you call M-file
functions called object creation functions (or object
constructors). These M-files are implemented using the
object-oriented programming capabilities provided by
MATLAB, which are described in MATLAB Classes and
Objects in the Help browser. The device object creation
functions are listed below.Table 3-1: Device Object Creation
Functions FunctionDescriptionanaloginputCreate an analog
input
object.analogoutputCreate
an
analog
output
object.digitalioCreate a digital I/O object.Before you can
create a device object, the associated hardware driver
adaptor must be registered. Adaptor registration occurs
automatically. However, if for some reason an adaptor is
not automatically registered, then you must do so manually
with the daqregister function. Refer to Registering the
Hardware Driver Adaptor for more information. You can find
out how to create device objects for a particular vendor and
subsystem with the ObjectConstructorName field of the
daqhwinfo function. For example, to find out how to create
an analog input object for an installed National Instruments
board, you supply the appropriate adaptor name to
daqhwinfo. out = daqhwinfo('nidaq');
out.ObjectConstructorName(:)
ans =
'analoginput('nidaq',1)'
'analogoutput('nidaq',1)'
'digitalio('nidaq',1)'

The constructor syntax tells you that you must supply the
adaptor name and the hardware ID to the analoginput
function ai = analoginput('nidaq',1);
The association between device objects and hardware
subsystems is shown below. Overview

Vous aimerez peut-être aussi