You are on page 1of 15

PROGRAMA DE INTEGRACIN LINEAL DE ESTUDIOS TCNICOS

EJERCICIOS PROPUESTOS
CICLO: 02-2014
MATERIA: LENGUAJE DE PROGRAMACIN INDUSTRIAL
ELECTRNICA
DOCENTE: RODRIGO IRAHETA
EJERCICIO 1.
Haga un VI que haga un arreglo de diez nmeros aleatorios, y que determine de ese arreglo si los elementos
cero, dos, cuatro, seis y ocho son mayores de 50.

Solucin:
El panel frontal lo construiremos primero colocando un control numrico, ControlsNum CtrlsNum Ctrl,
que ser utilizado para definir la cantidad de nmeros aleatorios a generar. Colocaremos 5 indicadores de
texto, ControlsText IndsString Ind, para desplegar el mensaje que diga si el elemento es mayor 50.Y
vamos agregar indicador de arreglo numrico, ControlsAll ControlsArrays & ClustersArray, para que el
arreglo sea de nmeros vamos a colocar un indicador numrico dentro del Array, el panel frontal debe
quedar muy parecido al que aparece en la figura.

Panel Frontal del ejercicio.

En el diagrama de bloques, lo primero que debemos hacer es crear un array de 10 nmeros aleatorios, para
esto nos vamos a valer de un lazo For, vamos a utilizar la funcin Random Number,
1

FunctionsArith/CompareNumericRandom Num, esta funcin genera nmeros aleatorios entre 0 y 1,


por lo tanto los vamos a multiplicar por 100 para que los nmeros generados estn entre 0 y 100.

La salida de la funcin de multiplicacin, la vamos a alambrar al indicador de arreglo numrico que se


encuentra fuera del lazo For, veras que cuando pasas por marco del lazo For se genera un recuadro, este se
conoce como tnel, si se da clic derecho sobre este recuadro aparecer un men elija la opcin Enable
Indexing (generalmente en lazo for esta opcin es la que aparece por default) esta opcin lo que hace es
crear un arreglo con todos los nmeros que llegan al tnel, es decir el numero aleatorio que se genera en
cada iteracin se almacena en este tnel como un arreglo, por lo tanto si el lazo For se ejecuta 5 veces, el
arreglo ser de un tamao de 5, si lazo se ejecuta 10 veces el arreglo ser de un tamao de 10, y as
sucesivamente.

El arreglo que se ha generado por el lazo For lo vamos a llevar a la funcin Index Array, FunctionsAll
FunctionsArrayIndex Array, esta funcin se utiliza para extraer un elemento en especifico del arreglo,
por medio del ndice, en el caso de nuestro VI, nos interesan los elementos 0, 2, 4, 6 y 8,
NOTA: Para tener acceso a ms de un elemento debes colocarte sobre el extremo inferior de la funcin
Index Array, y alargar hacia abajo, aparecern nuevas terminales.

Luego a la salida de la funcin Index Array, se tienen los cinco elementos que hemos elegido, estos los
comparamos con el valor de 50, si son mayores nos muestra un mensaje que dice Es mayor que 50, si no
nos muestra el mensaje que dice Es menor de 50.

Diagrama de bloques del ejercicio.


2

EJERCICIO 2
Haga un VI que contenga un cluster un control numrico, un control de texto, y un control booleano, este
cluster sern los valores inciales que tomara nuestro programa. Los valores inciales deben de poderse
cambiar si el usuario as lo decide, el usuario puede decidir cambiar uno de los elementos en particular o los
tres.
Solucin:
Vamos a crear nuestro panel frontal de la siguiente manera, un cluster para nuestros valores inciales, y un
cluster para desplegar los valores actuales. Para colocar los cluster bscalo en ControlsAll ControlsArray
& ClusterCluster, luego sobre el recuadro del cluster coloca los controles, primero el numrico, luego el
booleano y por ltimo el de texto.

En el otro cluster coloca los indicadores en el mismo orden en que colocamos los controles es decir, primero
el indicador numrico, luego el LED, y por ltimo el indicador de texto.

NOTA: Si no lo haces en el mismo orden se dar un mensaje de error.

Para que el usuario elija si quiere cambiar el valor numrico, el texto o el valor booleano, vamos a colocar
un control de seleccin mltiple, ControlsAll ControlsRing & EnumEnum, para personalizarlo debes dar
clic derecho sobre el control y elegir la opcin Properties, y luego elige la pestaa Edit tems.

Ventana de Propiedades del control ENUM

Las opciones a las que el usuario tendr acceso sern:

Variar valor numrico

Variar Valor booleano

Variar Mensaje de texto

Cambiar todos los Valores

Mantener valores iniciales.

Para poder variar los valores numricos, texto y booleano tendremos que colocar controles para dichas
funciones, al final el panel frontal debe parecerse al que se muestra en la figura.

Panel Frontal del ejercicio


En el diagrama de bloques colocaremos un lazo While, el cluster de los valores inciales estarn fuera del
lazo While ya que los utilizaremos para inicializar.

La terminal del control Enum lo conectaremos directamente al selector (signo de interrogacin que
aparece) del Case, luego sobre el marco del Case damos clic derecho se desplegara un men elije la opcin
Add Case for Every Value.

Para tener acceso al cluster utilizaremos la funcin Bundle, FunctionsAll FunctionsClusterBundle,


conecta el cluster de los valores iniciales en la terminal de arriba de la funcin automticamente aparecern
las terminales para acceder a los valores del cluster. Conecta cada caso tal como se muestra en las figuras
siguientes.

(b)

(a)

(c)

(e)

(d)

Alambrado de cada Caso del Case.


En la figura (a), muestra el caso en el que se desea cambiar nicamente el valor numrico del cluster. En la
figura (b), muestra el caso en el que se desea cambiar nicamente el texto. En la figura (c), muestra el caso
en el que se desea cambiar nicamente el valor booleano. En la figura (d) lo utilizamos para restablecer los
valores inciales. En la figura (e), muestra el cdigo del caso para cambiar todos los valores de los elementos
del cluster.
El Diagrama de bloques quedara muy parecido al que se muestra en la figura 13.

EJERCICIO 3:
Haga un VI que simule el vaciado y llenado de un tanque, el usuario debe decidir cundo llenar o vaciar el
tanque por medio de un selector en el panel frontal. El usuario debe decidir el valor mximo y mnimo del
tanque, cuando se alcance el valor mximo este se debe mantener hasta que se d la orden de vaciar, y
cuando este se vace debe mantenerse en el valor mnimo hasta que se la orden de llenar. Represente en
una grafica el historial del volumen del Tanque.
Solucin
Crearemos nuestro panel frontal con primero con dos controles numricos que nos servirn para
determinar los valores mximos y mnimos del tanque, un switch para controlar el vaciado o llenado del
tanque, un indicador numrico tipo tanque y un indicador grafico, un Waveform Chart ya que nos interesa
ver como varia en el tiempo la carga y descarga del tanque.

NOTA: para mostrar el display que aparece en el tanque debes dar clic derecho sobre el tanque se
desplegara un men escoge la opcin Visible tems y luego Digital Display. Para modificar la escala de
tiempo del Waveform Chart da clic derecho sobre el Chart, en el men que se despliega elije la opcin
Properties se abrir una ventana selecciona la pestaa Format and Precision y modifica el formato de la
escala de tiempo (X).
En

el

diagrama

de

bloques,

lo

primero

que

vamos

hacer

es

crear

nuestro

contador

ascendente/descendente, tal como ya lo hemos hecho en prcticas anteriores. Para lograr que el contador
se mantenga en un valor mximo o mnimo determinado vamos a utilizar en este caso dos Case.
Para mantener el valor mnimo cuando el tanque se est vaciando hay que analizar qu es lo que sucede en
el contador; para que el contador se decremente estamos restando 1 a la cantidad que guardamos en los
registros de desplazamiento (Shift Register), por lo tanto para que el valor no sigua disminuyendo le vamos
a sumar 1 por lo tanto estamos anulando el efecto del contador, este proceso se va a ejecutar siempre y
cuando el valor mnimo se haya alcanzado. Se sigue la misma filosofa para que el contador no sobrepase el
valor mximo, como el contador se va incrementando a razn de 1 cuando llegue al valor mximo debemos
restar 1 para que el efecto del contador quede anulado.

Diagrama de bloques del ejercicio

EJERCICIO 4.
Realice un VI donde se analice la amplitud de una seal senoidal, de tal manera que si la amplitud sobrepasa
o est por debajo de un porcentaje establecido por el usuario guarde dicho valor en un archivo de texto. El
programa debe de mostrar la amplitud actual de la seal senoidal, y me debe de decir cuantos datos se han
guardado en el archivo.
Solucin:
Haga su panel frontal parecido al que aparece en la figura, coloca tres controles numricos, uno para la
amplitud de la seal, otro para la frecuencia y otra para el porcentaje de error permisible para la amplitud.
Agrega 2 indicadores numricos los cuales los utilizaremos para mostrar la amplitud actual de seal senoidal
y el otro para mostrar la cantidad de datos guardados en el archivo de texto.

Panel Frontal del ejercicio E1.


En el diagrama de bloque vamos a colocar un lazo For para realizar un numero finito de pruebas, en este
caso hemos conectado una constante de 50 a la terminal del contador, conecta directamente en control de
frecuencia en bloque simulate signal, para que la amplitud vari entre cierto rango nos vamos a valer de la
funcin Random Number, tal como se muestra en la figura. El valor que genera la funcin vara entre 0 y 1
para que tengamos valores de amplitud por arriba y por debajo del la amplitud fundamental vamos a restar
0.5 a la salida de la funcin Random Number, ahora nuestro valores aleatorios varan entre -0.5 y 0.5, para
aumentar el error vamos a multiplicar por 20 los nmeros aleatorios tal como se puede observar en la
figura.

Generacin de nmeros aleatorios.

Para analizar y conocer el nuevo valor de amplitud que se est generando vamos a utilizar la funcin de
anlisis que se encuentra en la paleta de funciones, ControlsAnalysisTone, esta funcin es tambin un VI
Express, as que cuando lo coloques se generara una ventana en la cual configuras este VI, en nuestro caso
elige nicamente la opcin Amplitude.

Ventana de configuracin del VI Express

Ahora, como ya conocemos el valor de la amplitud instantnea, de la seal senoidal vamos a verificar si se
encuentra dentro del rango establecido. Vamos a restar el valor actual menos el valor de amplitud
fundamental, y el valor absoluto de esta operacin lo vamos a comparar con el porcentaje establecido. En el
caso en que se sobrepase o est por debajo del porcentaje de error establecido vamos a guardar el valor.

Verificacin si la amplitud de onda senoidal est dentro del rango establecido.

Guardar si esta fuera del rango.

Antes de todo tenemos que crear el archivo al que deseamos guardar tal como se muestra en la figura con
el VI, Open/Create/Replace File.vi, que se encuentra en la paleta de funciones, FunctionsAll
FunctionsFile I/O Open/Create/Replace File.vi, colcate sobre las terminal File path, da un clic derecho y
escoge la opcin CreateConstant, haz lo mismo con la terminal Function, en la terminal Function escoge la
opcin Create or Replace para que cada vez que corra su programa se reemplacen los datos de la ejecucin
anterior. Observa que nuestro programa se encuentra dentro de una estructura Squence, esto se ha hecho
de esta manera para que la creacin o reemplazo del archivo se ejecute primero y luego el resto del
programa.

10

Open/Create/Replace File.vi

Para guardar los el archivo vamos a utilizar el VI, Write To Spreadsheet File.vi, FunctionsAll FunctionsFile
I/OWrite To Spreadsheet File.vi, en la figura que sigue se muestra los nombres de las terminals que se
deben configurar de este VI, para nuestro caso nicamente hemos colocado una constante en la terminal
file path, esta constante es una constante de direccin de archivo que la puedes hallar en, FunctionsAll
FunctionsFile I/OFile ConstantsPath Constant, aqu colocaremos la direccin del lugar donde queremos
que el archivo se guarde.
Como los datos que vamos a guardar corresponden a una sola dimensin conectaremos a la terminal 1D
data.
Como queremos que cada vez que se genere un dato que este fuera del rango se agregue al archivo que ya
hemos creado la terminal append to file? Tiene que tener una constante verdadera para vaya agregando los
valores, La terminal Transpose se utiliza para generar el arreglo como fila (default) o columna, coloquemos
una constante verdadera para que se despliegue en forma de columna.

Write To Spreadsheet File.vi


Para saber cuntos datos se han guardado vamos a utilizar la bloque Read To Spreadsheet File.vi,
FunctionsAll FunctionsFile I/ORead To Spreadsheet File.vi, configura las entradas tal como se muestra
en

la

11

figura.

Diagrama de bloques del ejercicio

EJERCICIO 6
Haga un VI que encienda un LED por medio de un pulsador, y sea apagado por otro pulsador.
Solucin:
Este problema lo vamos a resolver de dos maneras diferentes, la primera utilizando variables locales, y la
otra utilizando variables globales.
a) Utilizando Variables locales:
Lo primero que vamos a hacer es nuestro panel frontal, con 2 pulsadores y un LED, tal como se muestra en
la figura.

Panel Frontal del Ejercicio, solucin con variables locales


Asegrate que los botones que ha colocado tengan una accin mecnica igual a la de un pulsador, como se
muestra en la figura.

12

Veamos ahora el diagrama de bloques, vamos a crear una variable local del indicador tipo LED, para crear la
variable local, da clic derecho sobre el LED, se desplegara un men elige la opcin, CreateLocal Variable.
Coloca dos variables locales del indicador LED, una dentro de cada Case, tal como se muestra en la figura,
ahora conecta un pulsador a cada Case, en el Case en el que ha conectado el pulsador de encendido
conecta una constante verdadera a la variable local en el caso verdadero, en el caso falso no hagas nada. En
el otro Case donde ha conectado el pulsador de apagado conecta una constante falsa a la variable local, en
el caso verdadero del case, en el caso falso no hagas nada.

Diagrama de bloques del ejercicio, solucin con variables locales


De manera que cuando se presiona el pulsador Encendido se ejecutara el caso verdadero en el cual se le
asigna el valor de verdadero al LED, por lo tanto enciende, cuando dejas de presionar el botn de
encendido el caso que se ejecuta el falso pero como no ha programado nada en ese caso, el valor en la
variable local queda guardado. Para apagarlo debe de ejecutarse le caso verdadero del Case al que se ha
conectado

el

pulsador

13

de

apagado.

b) Solucin con Variables Globales


El panel frontal es igual al que se utilizo con las variables locales.

Panel Frontal del Ejercicio, solucin con variables globales


Ahora, en lugar de crear variables locales, vamos crear una variable global, se encuentran en, FunctionsAll
FunctionsStructuresGlobal Variable,

ahora da doble clic sobre el icono de la variable global

aparecer una ventana de panel frontal aqu coloca cualquier control o indicador booleano como se
muestra en la figura 8, guarda y cierra este panel frontal.

Panel frontal de una variable global

Ahora en el diagrama de bloques,

da clic sobre el icono de la variable global, aparecer la

opcin Boolean, seleccinala y automticamente cambiara,

ahora ya puedes guardar datos

booleanos en dicha variable global, haz tres copias de esta variable, tal como se muestra en la figura.

14

Diagrama de bloques del ejercicio, solucin con variables Globales


El funcionamiento de este programa es el mismo que en el caso anterior, lo nico que ahora debemos leer
de la variable global para encender el LED.

15

You might also like