Condición simple #

Posiblemente el caso mas simple de interacción entre entradas y salidas digitales sea la activación de una salida en función del estado de una entrada. Si resolvemos este problema mediante lógica cableada, sin pasar por un dispositivo inteligente, veríamos un esquema del estilo al siguiente:

Aquí, si el pulsador DI2 está accionado, el led DO15 está encendido, si no, apagado.

Si llevamos el pulsador a una entrada de un microcontrolador, y el led a una salida, nos quedaría el siguiente esquema:

Esto nos da mucha versatilidad, ya que ahora, sin cambiar el cableado podemos realizar el problema planteado anteriormente, pero también podemos añadir temporización, contaje, comunicación Web, etc.

Recordamos que se va a trabajar en estas primeras etapas con pulsadores o interruptores NA y con configuración Pull-Down, como ya se explicó aquí.

  • Ejercicio 1: Automatiza el proceso cableado al inicio del artículo, según el cual, si accionamos un pulsador en el GPIO2, el led conectado al GPIO15 se activa, y si no, se mantiene apagado.
    • Material: microLSBEnlace a simulación o Carga en Placa.
    • Ayuda: Se recuerda que el bloque Segmento se encuentra en el apartado Elementos Ladder / Estructuras, y la lectura de entradas y gestión de salidas digitales en Elementos Ladder / E/S y variables.
    • Solución en microLSB y en TIA Portal de Siemens:

Se puede decir que una salida como «Bobina abierta» es lo mas parecido al cableado eléctrico, por eso fue de las primeras funciones que se implementaron. Si le «llega corriente» si se cierra el interruptor en DI2, se activa la salida, y si no, no.

  • Ejercicio 2: Realiza un programa para que el GPIO 15 esté activo solo si no se acciona el pulsador (NA Pull Down) conectado al GPIO 2.
  void setup()
  {
    pinMode(15, OUTPUT);
    pinMode(2, INPUT);
    Serial.begin(115200);
  }
  void loop()
  {
    if(!digitalRead(2)){
    digitalWrite(15,HIGH);
    }else{
    digitalWrite(15,LOW);
    }
  }
  • Ejercicio 3: Realiza el ejercicio 1, pero usando Set y Reset.

Una forma de realizar el programa anterior en Ladder usando Set y Reset, sería la siguiente:

Las funciones Set y Reset se implementaron para agilizar la programación en situaciones en las que el uso de bobinas abiertas resulta poco práctico. Recuerda que poner una salida en Set es dejarla activa, aunque no le llegue señal. Y ponerla en Reset, la única forma de apagarla.

  • Solución en C++ para Arduino:
  void setup()
  {
    pinMode(15, OUTPUT);
    pinMode(2, INPUT);
  }
  void loop()
  {
    if(digitalRead(2)){
    digitalWrite(15,HIGH);
    }else{
    digitalWrite(15,LOW);
    }
  }

Este mismo ejercicios se podría resolver mediante un bloque If-Else, siguiendo la misma estructura incluso espacial del código inmediatamente superior:

El bloque If-Else se encuentra también en Elementos Ladder / Estructuras y la activación de salidas en el este otro formato, en Elementos Ladder / E/S y variables.

Para usuarios que tengan un nivel superior de programación en Ladder, se puede comentar que una forma de hacer esto mediante el uso de flancos, que se verá mas adelante:

  • Ejercicio 3: Realiza un programa con el que, mediante una pulsación en DI2, se active DO15 y con una pulsación en DI12, se apague DO15.

Código en C++ para el IDE de Arduino:

  void setup()
  {
    pinMode(15, OUTPUT);
    pinMode(2, INPUT);
    pinMode(12, INPUT);
  }  
  void loop()
  {
    if(digitalRead(2)){
    digitalWrite(15,HIGH);
    }
    if(digitalRead(12)){
    digitalWrite(15,LOW);
    }
  }

Condiciones en serie (AND) #

AND significa Y en español. Incluir condiciones Y (en serie) exige que se tienen que cumplir a la vez todas esas condiciones para que se realice la acción asociada. En resumen, es lo que se plantea en el esquema eléctrico siguiente, en el que hay dos pulsadores (dos condiciones) en serie:

“Si se acciona el pulsador DI2 y el pulsador DI12, entonces activa el led DO15. En caso contrario, mantenlo apagado.”

En los editores Ladder, este tipo de condiciones se representan de forma muy similar:

El bloque Segmento incluye dos conectores para dos condiciones en serie:

Sin embargo, si se desean establecer mas de dos condiciones en serie, microLSB facilita un bloque AND que permite incluir condiciones en serie. Este bloque se encuentra en Elementos Ladder / Estructuras.

El número de condiciones en este bloque, a su vez se puede ampliar:

  • Ejercicio 4: Realiza un programa en el que se ejecute la lógica establecida en el esquema eléctrico anterior: Si se accionan a la vez las entradas DI2 y DI12, se activa la salida DO15. En caso contrario, se mantiene apagada.
  • Ejercicio 5: Realiza un programa con el que, mediante una pulsación en el GPIO 12, se active el GPIO 15, siempre que no esté activo el GPIO 2.
  • Ejercicio 6: Se conectan pulsadores a los pines 2, 12 y 14. Realiza un programa mediante el cual se active el GPIO 15 solo si están accionados los tres pulsadores a la vez.

Condiciones en paralelo (OR) #

OR significa O en inglés. Incluir condiciones O (en paralelo) significa que vale con que se cumpla cualquiera de las condiciones para que se realice la acción asociada. Un ejemplo de esto se muestra en el siguiente esquema eléctrico, en el que hay dos pulsadores en paralelo y cualquiera de los dos activará el led del circuito.

“Si se acciona el pulsador DI2 o el pulsador DI12, entonces activa el led DO15. En caso contrario, mantenlo apagado.”

En los editores Ladder, este tipo de condiciones se representan de forma muy similar:

En microLSB se facilita un bloque Or que permite incluir condiciones en paralelo. Este bloque se encuentra en Elementos Ladder / Estructuras. y el número de condiciones se puede ampliar de la siguiente forma:

  • Ejercicio 7: Se conectan pulsadores a los pines 2, 12. Realiza un programa mediante el cual se active el GPIO 15 si se activa cualquiera de los dos pulsadores si están accionados los tres pulsadores a la vez.