3.4

Control de los sensores:
programación de las entradas

 

Para comunicarse con los sensores de un sistema mediante una interfaz de control, Flowol cuenta con el bloque "Decisión" (o Condición):

que permite comprobar el estado de los sensores digitales y analógicos conectados a las entradas de la interfaz. Lo más habitual cuando se lee el estado de las entradas es tomar una decisión sobre el uso de los actuadores en función del valor que toman los sensores. Por ello, este bloque permite evaluar una condición dependiente del valor que toman los sensores y tomar una decisión entre dos alternativas de actuación.

Como se ha descrito ya en el primer tema, en Flowol los bloques se ejecutan sucesivamente uno tras otro (consecutivamente, secuencialmente). Esto define un camino o sentido único (flujo) según la cual se va desarrollado el programa. Sin embargo, habrá  momentos en que el programa deba ejecutar determinadas partes dependiendo del estado en el que se hallen las entradas de control y/o las variables. Esto permitir modificar el orden de la ejecución para adaptarse al estado del sistema, y bifurcar hacia distintas secciones del mismo cuando se cumplan ciertas condiciones, que el programador fija de antemano. A esto se le denomina en programación Control de flujo y, como vemos, el bloque Decisión permite llevarlo a cabo.

 

1. Edición de una condición

El bloque "Decisión" realiza la operación lógica: "Si se cumple una condición, entonces dirígete a...., si no, dirígete a ..." (equivale a la instrucción IF de otros lenguajes textuales, como BASIC o C).

Se trata de un bloque con una entrada y dos salidas. Permite bifurcar el flujo del programa entrante entre dos vías de salida alternativas (o una o la otra, pero no ambas). La elección de una u otra depende de si la evaluación de la condición especificada resulta en un valor verdadero o falso.

Para insertar este bloque en un punto del programa, no hay más que pulsar sobre el "rombo" de la barra de herramientas, arrastrarlo y hacer clic en el punto seleccionado. En este momento se abre el cuadro de diálogo Editar decisión que permite introducir la condición que dará lugar a la bifurcación.
 

Para editar la condición se pulsará en el botón Es del cuadro anterior, de modo que se obtiene:

Con éste cuadro se puede construir la condición en función del valor que toman:

  • las entradas digitales (botón Entrada)

  • las entradas analógicas (botón Val), o la diferencia entre dos de las entradas analógicas (botón Margen)

aunque también se puede construir una condición en base a:

  • el valor de las variables utilizadas en el programa (a, b, ...., x, y, z) -si no sabes todavía lo que es una variable, puedes consultar simultáneamente el tema 3.5, Variables y expresiones-

Por ejemplo, para comprobar si el 2º sensor digital está en activo habría que seguir la secuencia:

    pulsar el botón Entrada

    pulsar el botón 2

    pulsar el botón activa

con lo que se tiene:

y al pulsar Aceptar se obtiene:

En el caso de sensores analógicos se actúa de forma similar pero pulsando el botón Val:

y una vez seleccionado el nº de sensor, 

construir la condición utilizando los operadores relacionales:

  • > (mayor que)

  •  < (menor que)

  •  = (igual que)

  •  != (distinto de)

para llegar a un resultado del tipo:

Análogamente, para construir condiciones dependientes del valor de las variables habría que pulsar los botones a, b, ..., x, y, z:

para obtener condiciones del tipo:

 

2. Bifurcación condicional

La bifurcación del flujo entrante en función del valor de la condición se lleva a cabo añadiendo dos líneas de salida al bloque "Decisión". Una línea sigue el flujo del programa en caso de que la respuesta a la condición sea verdadera y otra línea en caso de que sea falsa. En Flowol la primera línea se denomina línea SÍ y la segunda línea NO.

Para incluir una línea SÍ no hay más que pulsar el botón SI de la barra de herramientas y hacer clic primero en el bloque "Decision" y segundo en el bloque que se desea ejecutar inmediatamente después de evaluar la condición verdadera.

Análogamente, para trazar la línea NO no hay más que pulsar el botón NO y unir el bloque "Decisión" con el bloque destino en caso de condición falsa:

 

3. Realización de bucles

Un bucle es un conjunto de instrucciones que se ejecutan repetidamente hasta que se verifica una condición de fin de bucle, o condición de salida del bucle. Se trata de una estructura utilizada muy frecuentemente en programación.

Flowol no proporciona ningún bloque específico para realizar bucles pero estos se pueden llevar a cabo utilizando el bloque "Decisión" de forma adecuada.

  • Programación de un bucle MIENTRAS

Supongamos que queremos ejecutar un proceso (por ejemplo, que un motor conectado a la primera salida gire) mientras que uno de los sensores digitales (por ejemplo, la entrada digital 1) esté activo. Para lograrlo, no tenemos más que insertar un bloque "Decisión" que compruebe el valor del sensor y, si está activo (condición SI), enlace con el bloque "Salida" que activa el motor, realimentando de nuevo la entrada del bloque "Decisión" con la salida del bloque "Salida". Por el contrario, si el sensor se ha desactivado (condición NO), debe seguir el flujo principal del programa:

En muchos lenguajes de programación, a un proceso iterativo de este tipo se le denomina bucle WHILE (se repite MIENTRAS que se cumple una determinada condición)

  • Programación de un bucle HASTA

Análogamente al caso anterior, supongamos que queremos ejecutar un proceso (por ejemplo, que un motor conectado a la primera salida gire) hasta que uno de los sensores digitales (por ejemplo, la entrada digital 1) se encuentre activo, suponiendo que no lo estaba inicialmente. Para lograrlo, no tenemos más que insertar un bloque "Decisión" que compruebe el valor del sensor y, si no está activo (condición NO), siga esperando, realimentando de nuevo la entrada del bloque "Decisión". Por el contrario, si el sensor se ha activado (condición SI), debe activar el motor y seguir el flujo principal del programa:

Nota: para conectar un bloque "consigo mismo" mediante una línea (ya sea SI, NO o siempre) no hay más que escoger el símbolo flecha de la barra de herramientas y pulsar en el bloque una vez y, tras ésta, otra más.

En muchos lenguajes de programación, a un proceso iterativo de este tipo se le denomina bucle UNTIL (se repite HASTA que se cumple una determinada condición)

En el primer tema de la próxima unidad didáctica estudiarás una estructura de control de flujo más avanzada, que combina el uso del bloque "Decisión" con la utilización de variables para definir un bucle de tipo DESDE...HASTA, el cual permite repetir un proceso un número establecido de veces.


Fuentes
 

Control y Robótica. Tema: El lenguaje de control Flowol. Curso provincial. Víctor R. González, Asesoría de Tecnología y FP, CFIE Valladolid II.

volver a Inicio