Discusiones sobre Productos NI

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

Problema con Simulink DAQ analog output

¡Resuelto!
Ir a solución

Hola, tengo un problema cuando trato de sacar datos con una placa NI USB 6211 usando el bloque Analog Output del Data Acquisition Toolbox de Simulink.

 

Conseguí adquirir con el bloque Analog Input, por lo que pienso que debería poder sacar datos de la misma manera con el bloque de salida. Éste es el modelo que funcionò correctamente y la configuración del bloque:

 

Analog_Input_Modelo_reducida.JPG

 

Analog_Input_Configuracion_Bloque_reducida.JPG

 


Sin embargo sigo obteniendo el siguietne error cada vez que trato de correr la simulación usando Analog Output:

Error reported by S-function 'sdaqao' in 'DAQ_Analog_Output/Analog Output':


To run in a hardware-clocked output mode, this hardware requires that at least
2 samples be queued using PUTDATA. You must pad your output with additional
samples to use PUTDATA, or use PUTSAMPLE instead.

 

Probé escribiendo el siguiente código en la ventana de comandos y después correr la simulación:

 

ao = analogoutput('nidaq','Dev1');
ch = addchannel(ao,0:1);
y = [1 1]';
putdata(ao,[y y])

 

Pero sigo obteniendo el mismo error.

También intenté usando Analog Output (Single Sample), pero tengo problemas de temporización. Por ejemplo, genero un seno de alguna frecuencia pero en el osciloscopio veo otra distinta y la simulación no dura lo que yo seteé en el modelo.

Pude adquirir datos escribiendo código en la ventana de comandos, pero para mi trabajo necesito poder hacerlo en Simulink. Estoy trabajando con Matlab R2012b.

 

Estas son las imàgenes del modelo y su configuración:

 

Analog_Output_Modelo_reducida.JPG

 

Analog_Output_Configuracion_Bloque_reducida.JPG 

 

Configuration_parameters_reducida.JPG

 

Cómo puedo sacar datos usando el bloque Analog Output? Realmente necesito poder hacer esto, así que cualquier ayuda será muy agradecida.

 

 

0 kudos
Mensaje 1 de 7
6.191 Vistas

Hola Idrim.

 

Este es un foro duplicado.

 

Como te comentaba en el otro mensaje, te recomendaría partir de alguno de estos ejemplos y ver si estos ***** comportan correctamente:

 

http://www.mathworks.com/help/daq/examples/generate-signals-on-ni-devices-that-output-voltage.html

http://www.mathworks.com/help/daq/examples/generate-continuous-and-background-signals-using-ni-devic...

 

Espero te sea de utilidad esta información, quedo al pendiente.

 

Saludos!

Aldo H
Ingenieria de Aplicaciones
0 kudos
Mensaje 2 de 7
6.155 Vistas

Hola Alherm,

 

Antes que nada, gracias por responder a mi pregunta, si bien la vi pocas horas después de que la hicieras, recién hoy pude leerla con detenimiento, leer los links y responderte. Si estás de acuerdo, contesto en esta pregunta, ya que mi idioma de origen es el castellano y por lo tanto me manejo mejor en ese idioma.

 

Lamentablemente creo que ya leí toda la ayuda que hay en Mathworks para usar el Data Acquisition Toolbox y no pude encontrar la solución a mi problema.

 

Si bien los links que me ofreciste mirar son de la Session-Based Interface y yo estoy trabajando en la Legacy Interface, de todas formas su información ya la había leído en estos dos, que son los que explican cómo usar el toolbox en esa interfaz:

 

http://www.mathworks.com/help/daq/examples/accessing-analog-output-channels.html

http://www.mathworks.com/help/daq/examples/generate-continuous-and-background-signals-using-ni-devic...

 

Lo que explica en esos links fui capaz de hacerlo, es decir pude sacar datos perfectamente por la placa usando ventana de comandos, pero no pude lograrlo con los bloques de Simulink, que es lo que necesito realmente hacer.

 

Mathworks ofrece un ejemplo para adquirir usando los bloques que pude replicar perfectamente y por eso puedo usar la entrada anlógica. Ese ejemplo está aquí:

 

http://www.mathworks.com/help/daq/building-simulink-models-to-acquire-data-from-a-device.html

 

Pero no hay un ejemplo claro sobre cómo armar y configurar un modelo para usar Analog Output y el que hice yo sigue tirando este error que no puedo resolver.

 

¿Tendrás alguna otra sugerencia que pueda ayudarme con mi problema? Gracias nuevamente por la respuesta, este proyecto es muy importante.

 

I.

0 kudos
Mensaje 3 de 7
6.135 Vistas

Hola Idrim. Creo que el problema esta en el tamaño de los datos que le estas pasando. Tal vez puedas copiar directamente los comandos que vienen en el ejemplo de putdata para ver si el error también da:

 

http://www.mathworks.com/help/daq/ref/putdata.html

 

Saludos.

Aldo H
Ingenieria de Aplicaciones
0 kudos
Mensaje 4 de 7
6.086 Vistas

Hola,

 

El tema es que esa forma de hacerlo ya la he probado y puedo adquirir y sacar por ventana de comandos, pero yo necesito hacerlo con Simulink.

 

Ya probé con esa misma porción de código y otras tantas variantes con el largo de los datos que le doy con PUTDATA, pero como lo que yo quiero es poder sacar la sinusoidal en el modelo de Simulink, después de usar PUTDATA en la ventana de comandos ejecuto el modelo y sigo teniendo el mismo error.

 

De ahí yo deduzco que lo que haga por ventana de comandos no sirve para cargar las dos muestras mínimas que pide el error que me sale.

 

Quisiera saber cómo poder hacer esto desde simulink, o cómo hacer para no tener más este error.

 

Saludos,

 

I.

0 kudos
Mensaje 5 de 7
6.083 Vistas

Hola Idrim,

 

Me gustaría compartir contigo un método alterno para poder resolver el problema que tienes utilizando Simulink. El siguiente link contiene un pequeño Tutorial de DAQ con MATLAB y justamente viene un apartado llamado "DAQ in Simulink--Analog Out". El ejemplo que muestra el tutorial no corresponde justamente a una onda senoidal pero te puede servir como punto de partida para comenzar a realizar pruebas con respecto a tu aplicación. Básicamente utiliza una función de Simulink llamada "Embedded MATLAB function” con la cual se implementa el código en MATLAB y se manda a llamar desde Simulink. Esto al final de cuenta es un work around. Te comparto la liga con el tutorial y una liga con más detalle de la función "Embedded MATLAB function”

 

Tutorial DAQ in MATLAB

 

Using Embedded MATLAB Blocks

 

Por otro lado te quisiera preguntar cuando colocas el bloque "Sine Wave" en Simulink, como lo estas configurando, cómo Time-Based o Sample-Based??

 

Sine Wave MathWorks

 

Yo intentaría configurarlo como Sample-Based.

 

Espero esta información te sea de utilidad y quedo al pendiente de cualquier detalle.

 

Saludos!

Antonio S.
Applications Engineer - NI Mexico
0 kudos
Mensaje 6 de 7
6.008 Vistas
Solución
Aceptado por el autor del tema Idrim

Hola Antonio,

 

Antes que nada, muchas gracias por tu respuesta. La verdad es que ya había leído el tutorial "DAQ in Matlab" y si bien me sirvió para entender cómo crear los objetos necesarios y cómo manejar la placa, no tuve buenos resultados con el método que propone para sacar datos por la salida anlógica en Simulink. Resulta que al hacerlo desde la Embedded Matlab Function veía salir la onda senoidal en el osciloscopio pero el tiempo estaba mal: Ni la sinusoide era de la frecuencia que yo había configurado ni la simulación duraba lo que yo seteaba en Simulink. Básicamente lo mismo que me ocurría al tratar de usar el bloque Analog Output (single sample).

 

De todas formas, hace poco (apenas dos días) me enteré que existía un bloque para trabajar en tiempo real que me sirvió para corregir este problema. Se puede descargar el blockset y leer acerca de él en:

 

http://www.mathworks.com/matlabcentral/fileexchange/3175-real-time-blockset-7-1-for-simulink

 

Por otro lado, encontré que de las funciones definidas por el uduario de Simulink el bloque Interpreted Matlab Function funciona mejor para esto. Luego, logré finalmente poder sacar los datos correctamente usando estos dos bloques y escribiendo los scripts en archivos .m en lugar de utilizando los bloques del toolbox.

 

Respondiendo a tu pregunta, usé el seno configurado en sample-based, aunque se la otra forma también funciona porque una vez que está definido el Step Time (y seteado Fixed-step en Configuration Parameters) ambos son equivalentes.

 

Muchas gracias por la atención y el tiempo.

 

Saludos!

 

I.

 

p.d.: Si alguien llega a leer esta pregunta porque tiene un problema similar y necesita más información de la que yo puse en esta respuesta, no dude en escribirme. Será un placer tratar de devolver la ayuda que he obtenido.

Mensaje 7 de 7
5.995 Vistas