Ejercicios Propuestos Pi Rodrigo Iraheta Ciclo 02 2014

15
 1 PROGRAMA DE INTEGRACIÓN LINEAL DE ESTUDIOS TÉCNICOS  E EJ JE ER RC CI I C CI I O OS S P PR RO OP PU UE ES ST TO OS S CICLO: 02-2014 MATERIA: LENGUAJE DE PROGRAMACIÒN INDUSTRIAL ELECTRÓNICA DOCENTE: RODRIGO IRAHETA EJERCICIO 1. Haga un VI que haga un arreglo de diez números aleatorios, y que determine de ese arreglo si los elementos cero, dos, cuatro, seis y ocho son mayores de 50. Solución:  El panel frontal lo construiremos primero colocando un control numérico, Controls»Num Ctrls»Num Ctrl, que será utilizado para definir la cantidad de números aleatorios a generar. Colocaremos 5 indicadores de texto, Controls»Text Inds»String Ind, para desplegar el mensaje que diga si el elemento es mayor 50.Y vamos agregar indicador de arreglo numérico, Controls»All Controls»Arrays & Clusters»Array, para que el arreglo sea de números vamos a colocar un indicador numérico 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 números aleatorios, para esto nos vamos a valer de un lazo For, vamos a utilizar la función Random Number,

description

labview

Transcript of Ejercicios Propuestos Pi Rodrigo Iraheta Ciclo 02 2014

  • 1

    PROGRAMA DE INTEGRACIN LINEAL DE ESTUDIOS TCNICOS

    EEJJEERRCCIICCIIOOSS PPRROOPPUUEESSTTOOSS 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,

  • 2

    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.

  • 3

    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

  • 4

    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.

  • 5

    (a) (b) (c)

    (d) (e)

    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.

  • 6

    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.

  • 7

    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

  • 8

    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.

  • 9

    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.

  • 10

    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.

  • 11

    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 figura.

  • 12

    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.

  • 13

    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 de apagado.

  • 14

    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.

  • 15

    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.