Maquinas de Estado

12
Lección 7 Usando algoritmos de máquinas de estado y secuenciales ni.com | 7-2 Ejercicio 7-1 VI State Machine Objetivo Crear un VI que implemente una máquina de estados usando una definición de tipo enum. Escenario Debe diseñar un VI para una máquina de estados de interfaz de usuario. El VI adquiere una temperatura cada medio segundo, analiza cada temperatura para determinar si es demasiado alta o baja y alerta al usuario si hay peligro de golpe de calor o congelación. El programa registra los datos si hay una advertencia. Si el usuario no ha hecho clic en el botón de parada, se repetirá todo el proceso. La máquina de estados también debe permitir la expansión, ya que pueden añadirse procesos en el futuro. Diseño Use el siguiente diagrama de flujo y la lista de estados para crear el VI de este ejercicio. National Instruments Prohibida su distribución

description

Labview

Transcript of Maquinas de Estado

Page 1: Maquinas de Estado

Lección 7 Usando algoritmos de máquinas de estado y secuenciales ni.com | 7-2

Ejercicio 7-1 VI State Machine

ObjetivoCrear un VI que implemente una máquina de estados usando una definición de tipo enum.

EscenarioDebe diseñar un VI para una máquina de estados de interfaz de usuario. El VI adquiere una temperatura cada medio segundo, analiza cada temperatura para determinar si es demasiado alta o baja y alerta al usuario si hay peligro de golpe de calor o congelación. El programa registra los datos si hay una advertencia. Si el usuario no ha hecho clic en el botón de parada, se repetirá todo el proceso. La máquina de estados también debe permitir la expansión, ya que pueden añadirse procesos en el futuro.

DiseñoUse el siguiente diagrama de flujo y la lista de estados para crear el VI de este ejercicio.

Natio

nal I

nstru

men

ts

Proh

ibid

a su d

istrib

ució

n

Page 2: Maquinas de Estado

LabVIEW Core 1 Ejercicios © National Instruments | 7-3

Diagrama de flujoEl diagrama de flujo en la figura 7-1 ilustra el diseño por flujo de datos.

Figura 7-1. Diagrama de flujo del VI Temperature Warnings

Initialize

Acquistion

Data log

Analysis

TimeCheck

Time Elapsed = FALSEand

Stop = FALSE

Stop = TRUE

Warning = TRUE

Time Elapsed = TRUEand

Stop = FALSE

Warning = FALSE

Natio

nal I

nstru

men

ts

Proh

ibid

a su d

istrib

ució

n

Page 3: Maquinas de Estado

Lección 7 Usando algoritmos de máquinas de estado y secuenciales ni.com | 7-4

Transiciones de estadoLa siguiente tabla describe los estados de esta máquina de estados.

Implementación1. Abra Weather Station.lvproj en el directorio <Exercises>\LabVIEW Core 1\Weather Station.

2. Abra Weather Station UI.vi de la ventana Project Explorer.

Estado Descripción Siguiente estado

Adquisición Establece el tiempo en cero, adquiera datos del sensor de temperatura

Análisis

Análisis Lee los controles del panel frontal y determina el nivel de alerta Registro de datos si ocurre una alarma, comprobar el tiempo si no hay alarmas

Registro de datos Registrar los datos en un archivo ASCII delimitado con tabulaciones

Comprobar el tiempo

Comprobar el tiempo Comprobar si el tiempo es superior o igual a 0,5 segundos Adquisición si ha transcurrido el tiempo, comprobar el tiempo si no ha transcurrido el tiempo

Natio

nal I

nstru

men

ts

Proh

ibid

a su d

istrib

ució

n

Page 4: Maquinas de Estado

LabVIEW Core 1 Ejercicios © National Instruments | 7-5

La figura 7-2 muestra el panel frontal del VI Weather Station UI que se proporcionó. Modifique el diagrama de bloques para crear una máquina de estados para la aplicación Weather Station.

Figura 7-2. Ventana del panel frontal del VI Weather Station UI

Natio

nal I

nstru

men

ts

Proh

ibid

a su d

istrib

ució

n

Page 5: Maquinas de Estado

Lección 7 Usando algoritmos de máquinas de estado y secuenciales ni.com | 7-6

La figura 7-3 muestra el punto de partida del diagrama de bloques para el VI Weather Station UI. Edite el diagrama de bloques para implementar una máquina de estados para la aplicación Weather Station.

Figura 7-3. Inicio del diagrama de bloques del VI Weather Station UI

3. Cree una nueva definición tipo para controlar la aplicación Weather Station.

Abra el diagrama de bloques y cree una constante Enum a la izquierda del bucle While.

Escriba Acquisition en la constante.

Haga clic con el botón derecho en la constante y seleccione Edit Items en el menú contextual.

1 Use estos controles e indicadores para programar diferentes casos.

1

Natio

nal I

nstru

men

ts

Proh

ibid

a su d

istrib

ució

n

Page 6: Maquinas de Estado

LabVIEW Core 1 Ejercicios © National Instruments | 7-7

Añada los ítems mostrados en la figura 7-4 y haga clic en OK.

Figura 7-4. Estados de la definición tipo Weather Station

Haga clic con el botón derecho en la constante enum en el diagrama de bloques y seleccione Make Type Def.

4. Modifique la nueva definición tipo y añádala al proyecto Weather Station.

Haga clic con el botón derecho en la constante enum y seleccione Open Type Def.

Cambie la etiqueta en el control Enum a States.

Guarde la definición tipo como Weather Station States.ctl en el directorio <Exercises>\LabVIEW Core 1\Weather Station\Supporting Files.

Natio

nal I

nstru

men

ts

Proh

ibid

a su d

istrib

ució

n

Page 7: Maquinas de Estado

Lección 7 Usando algoritmos de máquinas de estado y secuenciales ni.com | 7-8

Cierre la ventana Control Editor.

En ventana Project Explorer, note que el Weather Station States.ctl ha sido agregado a su carpeta Supporting Files debido a que esa carpeta es una carpeta auto-populada.

5. Controle la máquina de estados con un enum definición tipo y actualice el marco como en la figura 7-5.

Figura 7-5. Diagrama de bloques del VI Weather Station UI

Nota Luego que termina de cablear el caso Acquisition en el paso 6, algunos túneles están vacios debido a que no todos los casos han sido cableados aún.

1 Registro de desplazamiento—Haga clic con el botón derecho en el bucle While y seleccione Add Shift Register.

2 Definición tipo constante enum—Haga clic con el botón derecho y seleccione Visible Items»Label. Cambie la etiqueta a Beginning State. Cablee la constante Beginning State al registro de desplazamiento para inicializar el registro de desplazamiento al estado Acquisition. Cablee el registro de desplazamiento al selector de casos de la estructura Case.

3 Agregue más casos—Haga clic con el botón derecho en la estructura Case y seleccione Add Case for Every Value para añadir un caso por cada elemento del enum.

4 Weather Data In—Arrastre el Weather Data.ctl de la ventana Project Explorer al diagrama de bloques para crear una constante de cluster definición tipo. Haga clic con el botón derecho en el cluster y seleccione View Cluster As Icon.

5 Registro de desplazamiento—Coloque un registro de desplazamiento en el bucle While y cablee la constante Weather Data In a él.

5

4

2

1 3Na

tiona

l Ins

trum

ents

Proh

ibid

a su d

istrib

ució

n

Page 8: Maquinas de Estado

LabVIEW Core 1 Ejercicios © National Instruments | 7-9

6. Complete el estado Acquisition como en la figura 7-6.

Figura 7-6. Estado Acquisition VI Weather Station UI

1 Thermometer o Thermometer (Demo)—Arrastre uno de estos VIs de la carpeta Shared Files en la ventana Project Explorer al diagrama de bloques. Arrastre el VI Thermometer si tiene hardware y arrastre el VI Thermometer (Demo) si no tiene hardware.

2 Temperature History—Mueva este indicador al estado Acquisition de la estructura Case.

3 Bundle By Name—Cablee la salida Temperature Value del VI Thermometer a la entrada Current Temperature.

4 Next State enum—<Ctrl>-haga clic en enum Beginning State y arrastre una copia al caso Acquisition. Cambie el nombre de esta copia de la definición tipo Weather Station States a Next State. Establezca el enum en Analysis y cabléelo a través de un túnel en la estructura Case al registro de desplazamiento en el bucle While.

5 Constante True—Cree una constante True y cabléela a través de la estructura Case al registro de desplazamiento Elapsed Time. La constante True reinicia el contador Elapsed Time cada vez que el VI ejecuta el caso Acquisition.

1 2 3 4

5

Natio

nal I

nstru

men

ts

Proh

ibid

a su d

istrib

ució

n

Page 9: Maquinas de Estado

Lección 7 Usando algoritmos de máquinas de estado y secuenciales ni.com | 7-10

7. Complete el caso Analysis como en la figura 7-7.

Figura 7-7. VI Weather Station UI—Caso Analysis

1 Upper Limit y Lower Limit—Mueva estos controles numéricos fuera del bucle While.

2 Bundle By Name—Reemplace los ítems Max Temperature y Min Temperature con los valores de los controles Upper Limit y Lower Limit. La función Bundle By Name hace posible cablear los valores Upper Limit y Lower Limit a la entrada Weather Data In del VI Temperature Warnings.

3 Temperature Warnings—Arrastre el VI Temperature Warnings de la carpeta Supporting Files en la ventana Project Explorer.

4 Unbundle By Name—Devuelve el valor de un ítem específico de un cluster.

5 Select—Determina cual estado se ejecutará a continuación dependiendo si ocurre una alerta o no.

6 Weather Station States—Cablee dos copias de la definición tipo Weather Station States a la función Select. Puede crear estas copias del enum Beginning State.

6 Warning—Mueva este indicador de afuera del bucle While.

72 431

6

5

Natio

nal I

nstru

men

ts

Proh

ibid

a su d

istrib

ució

n

Page 10: Maquinas de Estado

LabVIEW Core 1 Ejercicios © National Instruments | 7-11

8. Complete el caso Data Log como en la figura 7-8.

Figura 7-8. VI Weather Station UI—Caso Data Log

1 Unbundle By Name—Devuelve el valor de un ítem específico de un cluster.

2 Constant Tab—Inserta una tabulación en la cadena de caracteres. El archivo de registro que creó contiene tabulaciones entre valores.

3 Constante End of Line—Inserta un valor de fin de línea específico de la plataforma al final de la cadena de caracteres. El archivo de registro que creó usa constantes de fin de línea para insertar cortes entre los datos

4 Format Into String—Expanda el nodo para aceptar ocho entradas.

5 Write to Text File—Escribe el texto que le acaba de de dar formato a un archivo de registro.

6 Next State—Crea una copia del enum Weather Station States, la etiqueta Next State y establece el siguiente estado como Time Check.

5 6

1 2 43

Natio

nal I

nstru

men

ts

Proh

ibid

a su d

istrib

ució

n

Page 11: Maquinas de Estado

Lección 7 Usando algoritmos de máquinas de estado y secuenciales ni.com | 7-12

9. Complete el caso Time Check como en la figura 7-9.

Figura 7-9. VI Weather Station UI—Caso Time Check

10. Guarde y cierre el VI.

1 Next State—Cablee dos copias de la definición tipo Weather Station States a la función Select.

2 Select—Determina cual estado se ejecutará a continuación dependiendo si el tiempo ha pasado o no.

3 Stop Button—Mueva la terminal Stop Button de afuera del bucle While. Cablee la terminal Stop Button a la función Or afuera de la estructura Case.

4 Cable Next State—Cablee el túnel del cable Next State al registro de desplazamiento.

5 Use predeterminados si no están cableados—Haga clic con el botón derecho en estos túneles y seleccione Use Default If Unwired.

3

2 41

5

Natio

nal I

nstru

men

ts

Proh

ibid

a su d

istrib

ució

n

Page 12: Maquinas de Estado

LabVIEW Core 1 Ejercicios © National Instruments | 7-13

Prueba1. Ejecute el VI.

Dé un nombre al archivo de registro cuando se lo indique.

Ingrese los valores de los controles Upper Limit y Lower Limit y observe el comportamiento del VI. ¿Se comporta como se esperaba?

2. Detenga el VI.

3. Busque el archivo Weather Warning Log.txt y ábralo.

4. Note los cambios en los valores superiores e inferiores y la colocación de las tabulaciones y cortes de líneas.

5. Cierre el archivo de registro.

6. Salve y cierre el VI y el proyecto.

Fin del ejercicio 7-1

Natio

nal I

nstru

men

ts

Proh

ibid

a su d

istrib

ució

n