Está en la página 1de 6

EQUIPOS ELECTRNICOS DE MEDIDA

4 GRADUADO EN INGENIERA MECNICA

SESIN 3 DE GRUPO REDUCIDO

INTRODUCCIN AL LENGUAJE CVI

Introduccin:

El objetivo de esta sesin es introducir al alumno en la programacin con CVI.


El CVI (C for Virtual Instrumentation / C para Instrumentacin Virtual) es un entorno
de programacin C que, adems de los contextos clsicos de cualquier otro entorno de
depuracin C (C++, Visual C, ) como editor de texto, compilador, herramientas de
depuracin (ejecucin paso a paso, breakpoints, ), posee otras prestaciones y libreras
orientadas a la creacin de instrumentos virtuales. En este sentido a los ficheros clsicos de
programa (.c), includes (.h), se aade un tipo (.uir) que incluye el concepto de panel. El
panel, (o paneles, (pueden ser ms de uno)), es la pantalla visual donde el usuario tendr los
controladores e indicadores de su instrumento virtual. Es el mismo concepto que la cartula de
un instrumento fsico pero con todas las ventajas de la virtualidad. En el contexto de las
libreras se disponen de mltiples libreras relacionadas con la instrumentacin (buses VXI,
GPIB, RS-232, TCP, redes, ). Adems, en este mismo marco, se tiene una herramienta muy
interesante como es la pantalla interactiva que, por cada funcin, nos permite su construccin
ayudada e incluso su ejecucin en prueba aislada. Por ltimo se tienen otras prestaciones
como instrumentos, active-x,

Caso planteado :

En esta primera sesin se pretende realizar un programa de un instrumento virtual para


controlar el nivel de un depsito. Para ello se tendrn dos variables:

Variable nivel que responder al valor del nivel medido en el depsito. En su


momento esta variable ser actualizada por la lectura, a travs de un SAD, del sensor de nivel
que se supone en el depsito. En esta primera sesin se simular esta variable mediante un
potencimetro virtual . (Para esta primera sesin no se dispone de SAD, el objetivo es
introducirnos en la programacin CVI, en sucesivas sesiones se incorporarn los sistemas
fsicos)

Variable ajuste que responder al valor de ajuste requerido por el usuario del
programa. En esta ocasin esta variable s proviene de un potencimetro virtual del panel
donde el usuario fijar el valor deseado.

Por otra parte se dispondr de dos indicadores de nivel, de un led de alarma que se
activar cuando el nivel de la variable supere al nivel de ajuste y de un botn de parada.

Pg. 1
Sesin 3:
a.- Crear un proyecto con el nombre del grupo y _CVI_1 (grupoX_CVI_1.cws).
Incorporarle el siguiente programa C:

NOTA: Utilizar las libreras y las pantallas interactivas para incorporar las funciones
(no escribirlas directamente, al menos varias de ellas)

#include <grupoX_CVI_1.h> // colocar el nmero del grupo en lugar de la X

void main ()

{
int mipanel, identificador, manejador;
float nivel, ajuste1;

mipanel = LoadPanel (0, "primeroA.uir", PANEL1);


if (mipanel < 0) return;

DisplayPanel (mipanel);

identificador = 0;

while (identificador != PANEL1_SALIR)


{
GetUserEvent (0, &manejador, &identificador);

GetCtrlVal (mipanel, PANEL1_AJUSTE, &ajuste1);


SetCtrlVal (mipanel, PANEL1_TANQUE1, ajuste1);

GetCtrlVal (mipanel, PANEL1_NIVEL, &nivel);


SetCtrlVal (mipanel, PANEL1_TANQUE2, nivel);

if (nivel > ajuste1)


SetCtrlVal (mipanel, PANEL1_LED, 1);
else
SetCtrlVal (mipanel, PANEL1_LED,0);

} // del while

DiscardPanel (mipanel);

return;

} // del main

(Salvarlo con el mismo nombre del proyecto pero con la extensin .c)

Pg. 2
b.- Crear un panel (fichero.uir) con el mismo nombre del fichero.c y la extensin .uir.

Incorporar a este panel:

Constant name del panel: PANEL1


Un dial para la variable nivel a medir
(Constant name: NIVEL)
Un dial para el punto de ajuste de usuario
(Constant name: AJUSTE)
Un indicador para la variable a medir
(Constant name: INDICADORNIVEL)
Un indicador para el punto de ajuste de usuario (Constant name:
INDICADORAJUSTE)
Un diodo led para indicar situacin de alarma (Constant name: LED)
Un botn de comando para finalizar el programa (Constant name: SALIR)

Ajustar los rangos, colores, valores por defecto, segn se vi en clase.

c.- Guardar el panel y comprobar la creacin del fichero de mismo nombre y extensin .h

d.- Incorporar los tres ficheros (.c, .uir y .h) al proyecto.

e.- Compilar y depurar el proyecto comprobando, tras depurar errores si los hay, el correcto
funcionamiento del mismo.

f.- Realizar diversas modificaciones para familiarizarse con el entorno (cambiar colores, hacer
modificaciones del programa, aadir/quitar indicadores y/o controladores,)

g.- Incorporar una funcin de modificar atributos de los controles:

Por ejemplo, cuando se supere el valor del ajuste, adems de encender el led de alarma
cambiarle el color al tanque de la variable que ha superado el valor.

h.- Aadir al panel un logotipo o anagrama (picture) con algn fichero de imagen permitido.

(descargarse, por ejemplo el logotipo de la UMA o de National Instruments)

i.- Realizar algunas pruebas de ejecucin paso a paso, breakpoints, seguimiento de


variables,

Cuestiones:

1.- Qu diferencia hay en los controles tipo Hot y tipo Indicator?

2.- Qu ocurre si ponemos tipo Indicator al botn de salida?

3.- Cmo podemos salir de la situacin creada en el apartado anterior?

Pg. 3
4.- Comentar brevemente el significado o accin de las siguientes lneas del programa;

#include <grupoX_CVI_1.h> // colocar el nmero del grupo en lugar de la X

void main ()

int mipanel, identificador, manejador;

float nivel, ajuste1;

mipanel = LoadPanel (0, "primeroA.uir", PANEL1);

if (mipanel < 0) return;

DisplayPanel (mipanel);

identificador = 0;

while (identificador != PANEL1_SALIR)

GetUserEvent (0, &manejador, &identificador);

GetCtrlVal (mipanel, PANEL1_AJUSTE, &ajuste1);

SetCtrlVal (mipanel, PANEL1_TANQUE1, ajuste1);

SetCtrlVal (mipanel, PANEL1_LED, 1);

DiscardPanel (mipanel);

OBSERVACIONES / COMENTARIOS:

Pg. 4
GRUPO: ___________ FECHA: _______________________

ALUMNO 1: ___________________ ALUMNO2:_________________________

EQUIPOS ELECTRNICOS DE MEDIDA


4 GRADUADO EN INGENIERA MECNICA

SESIN 3 DE GRUPO REDUCIDO

ANEXO RESPUESTAS
INTRODUCCIN AL LENGUAJE CVI

Cuestiones:

1.- Qu diferencia hay en los controles tipo Hot y tipo Indicator?

2.- Qu ocurre si ponemos tipo Indicator al botn de salida?

3.- Cmo podemos salir de la situacin creada en el apartado anterior?

4- Comentar brevemente el significado o accin de las siguientes lneas del programa;

#include <grupoX_CVI_1.h> // colocar el nmero del grupo en lugar de la X

Pg. 5
int mipanel, identificador, manejador;

float nivel, ajuste1;

mipanel = LoadPanel (0, "primeroA.uir", PANEL1);

if (mipanel < 0) return;

DisplayPanel (mipanel);

identificador = 0;

while (identificador != PANEL1_SALIR)

GetUserEvent (0, &manejador, &identificador);

GetCtrlVal (mipanel, PANEL1_AJUSTE, &ajuste1);

SetCtrlVal (mipanel, PANEL1_TANQUE1, ajuste1);

SetCtrlVal (mipanel, PANEL1_LED, 1);

DiscardPanel (mipanel);

Pg. 6