Domótica Conceptos básicos de programación con microcontroladores
Introducción
L
os autómatas programables, o PLC, se diseñaron para el control de instalaciones industriales, con unos grandes requerimientos en cuanto a rapidez y capacidad de realizar automatizaciones muy complejas. En los últimos tiempos, gracias al rápido progreso de la electrónica y a la ampliación de las aplicaciones de la electricidad en casi todos los campos, se han venido desarrollando versiones más sencillas de estos PLC para aplicaciones específicas menos complejas. Son los microcontroladores o relés programables. En muchas instalaciones domóticas nos vamos a encontrar con la necesidad de realizar automatismos sencillos para controlar subsistemas integrados en la instalación que, por sus características, se automatizan de una forma muy conveniente mediante pequeños cuadros con elementos de lógica cableada, o incluso con relés programables. Entre estos sistemas se encuentran, por ejemplo: sistemas complejos de alumbrado tanto en interiores como en exteriores, instalaciones de ventilación, sistemas de bombeo para extracción de pozos, controles de acceso, puertas automatizadas, garajes, instalaciones complejas de generación y gestión de calor y frío, aparcamientos, control de pequeña maquinaria, instalaciones agrícolas, además de las instalaciones domóticas propiamente dichas, para las que también son muy válidos, etcétera. La automatización de estos sistemas se realiza de forma natural y muy apropiada con la tecnología de automatización industrial aplicada a este entorno domótico. Por ello, en la presente unidad se va a estudiar la tecnología de automatización industrial, aprendiendo a desarrollar, desde el punto de vista de la lógica cableada y de la programación, pequeños sistemas automatizados que den respuesta a esta necesidad. Los relés programables presentan una facilidad de montaje, de uso y de mantenimiento muy considerables, siendo muy compactos y ocupando muy poco espacio; presentan también una programación relativamente sencilla. Estas características los hacen muy adecuados para los usos externos a la actividad industrial.
Esquema de contenido
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
Variable binaria y álgebra de Boole de aplicación al instalador. Sistemas de numeración Sistemas combinacionales y secuenciales básicos. Ejercicios resueltos PROGRAMACIÓN CON GRAFCET. EJERCICIOS RESUELTOS
RELÉ PROGRAMABLE ZELIO DE SCHNEIDER ELECTRIC Y LOGO DE SIEMENS
Relé programable Zelio de Schneider Electric Relé programable Logo de Siemens
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA Variable binaria y álgebra de Boole de aplicación al instalador. Sistemas de numeración Existen un gran número de dispositivos de aplicación en instalaciones automatizadas que presentan sólo dos estados estables en su funcionamiento. Por ejemplo, un receptor genérico, tal como una lámpara, un motor, un actuador, etc., pueden estar encendidos (estado de funcionamiento que asociaremos al estado lógico 1), o apagados (estado de funcionamiento que asociaremos al estado lógico 0). En general, realizaremos las siguientes asociaciones lógicas con respecto a los estados de funcionamiento de los siguientes elementos de instalaciones automatizadas: Estado lógico – Estado de funcionamiento
Estado lógico – Estado de funcionamiento
Interruptor
1 ∩ accionado1
0 ∩ sin accionar1
Lámpara
1 ∩ encendida
0 ∩ apagada
1 ∩ con tensión de alimentación
0 ∩ sin tensión de alimentación
Electroválvula
1 ∩ con tensión de mando
0 ∩ sin tensión de mando
Válvula neumática
1 ∩ con presión de pilotaje
0 ∩ sin presión de pilotaje
1 ∩ accionado1
0 ∩ sin accionar1
Elemento
Motor
Pulsador Tabla 1. Asociaciones lógicas con respecto a los estados de funcionamiento.
Este carácter binario (sólo 2 estados posibles) de la mayoría de los dispositivos de instalaciones automatizadas hace posible que las asociaciones entre los mismos para formar una instalación concreta se puedan traducir en operaciones matemáticas sencillas entre variables que irán asociadas una a una con cada elemento de la instalación. En otras palabras, la lógica binaria define la forma de relacionarse entre sí de los elementos de automatización que sólo tienen dos estados de funcionamiento. Por lo tanto, la lógica binaria es una herramienta muy poderosa para definir y entender los sistemas de automatización de todo tipo, ya sea bajo la forma
1
Nota: es un error muy común el confundir, como más adelante se explicará, el estado "accionado" o "sin accionar" del interruptor o del pulsador con que sus contactos dejen pasar la corriente o no, puesto que para determinar si la corriente pasa o no tendremos que conocer, además, si el contacto eléctrico del elemento que se está usando es del tipo normalmente abierto o del tipo normalmente cerrado. 6
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
de lógica cableada, o de los diferentes lenguajes de programación de microcontroladores e incluso de autómatas programables, de gran aplicación en las instalaciones domóticas y automatizadas. Las reglas matemáticas que definen las operaciones que se pueden hacer sobre las variables binarias se denominan, en conjunto, el álgebra de Boole, que realiza operaciones solamente con los dos valores posibles: 0 y 1, y los resultados sólo pueden ser, también, o bien 0 o bien 1. Ya has estudiado las reglas del álgebra de Boole y sus propiedades en la unidad dedicada a la electrónica, por lo que no las repetiremos en esta unidad. Sí vamos a desarrollar, sin embargo, sus aplicaciones en el campo de las instalaciones automatizadas en base a circuitos lógicos cableados y programación de microcontroladores.
Sistemas de numeración Matemáticamente, podemos representar cantidades (números) de formas muy diferentes, que llamaremos “sistemas de numeración”. Emplearemos un sistema u otro en función de la utilidad que nos proporcione para una determinada aplicación. Son ejemplos de sistemas de numeración: Cantidad (número)
Sistema decimal
Código binario natural
Código reflejado de Gray
Cero
0
0000
0000
Uno
1
0001
0001
Dos Tres
2 3
0010 0011
0011 0010
Cuatro
4
0100
0110
Cinco
5
0101
0111
Seis Siete
6 7
0110 0111
0101 0100
Ocho
8
1000
1100
Nueve
9
1001
1101
Diez
10
1010
1111
Once Doce
11 12
1011 1100
1110 1010
Trece
13
1101
1011
Catorce
14
1110
1001
Quince
15
1111
1000
Tabla 2. Sistemas de numeración. 7
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Nos fijaremos en que aunque hemos llegado a representar el número quince, en realidad hemos representado dieciséis números, puesto que el primero de ellos es el cero. En la tabla anterior nos resulta muy familiar la representación de las cantidades en sistema decimal y sistema binario (estudiados en la unidad 4), mientras que, seguramente, no será tan familiar la representación en el código reflejado de Gray. Los códigos binario natural y reflejado de Gray son de gran aplicación en programación de sistemas de naturaleza binaria, dado que todos sus dígitos pueden tomar tan sólo los valores 0 ó 1, como los estados de funcionamiento de la mayoría de elementos de automatización. En cuanto al código binario natural, ya estudiaste en la unidad dedicada a la electrónica que para construir el número siguiente en dicho código a partir del anterior, hay que ir haciendo aparecer los unos en la posición más a la derecha que estén ocupadas por cero y si dichas posiciones ya están ocupadas por unos, entonces se pondrá un cero a la izquierda de la fila de unos, sustituyendo los anteriores por ceros. Sin embargo, no hay una regla tan sencilla para construir el código reflejado de Gray, como se verá próximamente.
Sistema decimal y código binario natural El sistema decimal de numeración es el que nos resulta más familiar, dado que es el que empleamos en nuestra vida cotidiana. Emplea diez símbolos o dígitos: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. A partir de estos diez dígitos se construyen cantidades más grandes uniéndolos en grupos de dos, tres, cuatro, etc., consiguiendo representar cantidades tan altas como sea necesario. Por ejemplo, el número 2.437 se compone de cuatro dígitos unidos y cada uno de los mismos tiene un valor que depende de sí mismo (de qué dígito se trata de entre los diez posibles), y de su posición dentro del número (su valor se verá multiplicado por 10 con cada posición que nos movamos a la izquierda). En otras palabras, éste número se puede expresar como la suma de los siguientes:
2.437 = 2.000 + 400 + 30 + 7 = 2 x 1000 + 4 x 100 + 3 x 10 + 7 x 1
Recordaremos que cualquier número, excepto el propio cero, elevado a cero da como resultado el 1. En el código binario, como recordarás en la unidad 4, se emplean únicamente dos dígitos: 0 y 1, con los que se construyen cantidades más grandes 8
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
uniéndolos en grupos de dos, tres, cuatro, etc., con lo que también se consigue representar cantidades tan altas como sea necesario. Son números en sistema binario, por ejemplo, los siguientes: 1110001, 1001, 11110, 10, etc. De la misma forma que en el sistema decimal, en el código binario los dígitos toman su valor dependiendo de cuál de ellos se trate y de la posición en la que vaya colocado dentro del número. En este caso, cada vez que nos movemos una posición a la izquierda representa una potencia creciente de dos (al igual que en el sistema decimal representaba una potencia creciente de 10).
Conversión de un número en código binario a su equivalente en sistema decimal Para pasar un número expresado en código binario a su equivalente en el sistema digital, multiplicaremos cada uno de los dígitos del mismo por el peso correspondiente a la posición que ocupa y sumaremos todos los resultados, como se realiza a continuación con el número binario 1011101: Dígitos binarios del número
1
0
1
1
1
0
1
Posición del dígito Peso de la posición (la base de la potencia es 2 porque es sistema binario) Peso en sistema decimal
6
5
4
3
2
1
0
26
25
24
23
22
21
20
64
32
16
8
4
2
1
1 x 64
0 x 32
1 x 16
1x8
1x4
0x2
1x1
64
0
16
8
4
0
1
Dígito binario x peso decimal Valor decimal de cada posición binaria RESULTADO = Suma de todos los valores decimales
93 Tabla 3. Conversión de un número binario en decimal.
Por lo tanto, el número que en código binario natural se expresa como 1011101, equivale al 93, expresado en sistema decimal (recuerda, de nuevo, que cualquier número, excepto el propio cero, elevado a cero da como resultado el 1).
Conversión de un número en sistema decimal a su equivalente en código binario Para pasar un número expresado en sistema decimal a su equivalente en código binario hay que dividir el número por 2 sucesivamente hasta que el último cociente sea 1. Para formar el número en código binario equivalente al decimal inicial, se colocará en la posición más a la izquierda el último cociente y a su derecha se irán colocando los restos de las divisiones sucesivas subiendo por la operación de división desde el último cociente hasta el primero. 9
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Veamos el 93 del ejemplo anterior:
Código reflejado de Gray En lógica binaria (recuerda que es una herramienta muy potente para definir y entender los sistemas binarios de automatización) tiene un gran interés para ciertas operaciones el código binario de Gray. Vamos a ver a continuación cómo se forma el mismo. Para formar el código reflejado de n dígitos (bits), partimos del código reflejado correspondiente a un dígito menos (n -1), y a continuación trazamos una línea debajo de la tabla que servirá de eje de reflexión (como en un espejo). Por debajo de esta línea escribiremos el mismo código que existe por encima pero en orden inverso, de forma que cada número quede a la misma distancia de la línea por debajo de la misma que tenía el número original por arriba. Después de esto completaremos la tabla rellenando con un cero a la izquierda para todos los números por encima de la línea y con un uno a la izquierda para todos los números por debajo de la misma. Veamos algunos ejemplos empezando desde el más sencillo: Formación del código reflejado de dos dígitos a partir del código reflejado de uno: El código reflejado de un dígito es el más sencillo posible, puesto que solamente tiene dos números, de un dígito cada uno: 0 1 A partir del mismo, trazamos una línea por debajo y reflejamos los números existentes como en un espejo:
Y finalmente completamos con ceros a la izquierda por encima de la línea y con unos a la izquierda por debajo de la misma, con lo que queda completo el código reflejado de dos dígitos: 10
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
Formaremos ahora el código reflejado de Gray de tres dígitos a partir del código de 2 que acabamos de hacer. Primero reflejar hacia abajo:
Y por último completar con ceros a la izquierda por encima de la línea y con unos a la izquierda por debajo de la línea:
Y así sucesivamente se van formando los códigos reflejados de más dígitos. El código reflejado de Gray tiene la propiedad de que al pasar de un número al siguiente (de una fila a la siguiente dentro del código reflejado), solamente cambia un dígito. En la tabla 2, del principio del apartado, puedes observar cómo esto se cumple para el código reflejado de cuatro dígitos, pero no para el correspondiente código binario natural. Más adelante veremos su utilidad en la simplificación de funciones lógicas mediante las tablas de Karnaugh.
Funciones lógicas. Simplificación En este apartado vamos a estudiar las relaciones entre los elementos que componen un sistema automático con elementos binarios (de funcionamiento todo-nada), desde los elementos lógicos más básicos (funciones lógicas básicas), hasta la combinación de los mismos para montar sistemas automáticos más complejos, aplicadas a los sistemas automatizados que se basan en esquemas cableados y programación de microautómatas. Imaginemos, por ejemplo, el diseño del automatismo que gobierna la apertura y cierre de una puerta automática comandada por dos células detectoras de movimiento y con una seta de emergencia (el caso típico de las puertas automáticas de los centros comerciales). Será necesario definir la relación 11
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
entre las entradas del sistema automático (las células detectoras de movimiento y la seta de emergencia) y la salida del sistema (el contactor que comanda el motor de accionamiento de la puerta), lo cual nos definirá inequívocamente el funcionamiento del automatismo en cuestión. Por lo tanto, llamamos función lógica a la relación entre las diversas variables del sistema automático que nos definirá el funcionamiento de las salidas del mismo. En nuestro ejemplo, la función lógica nos dirá cómo hemos de conectar los contactos eléctricos que nos dan los detectores de movimiento, entre sí y con el contacto de la seta de emergencia, para que la tensión que llega desde la alimentación del sistema automático llegue a la bobina del contactor que comanda el motor justo cuando queremos (cuando uno de los dos detectores o los dos simultáneamente detecten movimiento y la seta de emergencia no esté pulsada). Con esta relación ( función lógica que se puede expresar indistintamente con cualquiera de los cuatro métodos mencionados), podremos realizar el automatismo que nos solucione la necesidad que se pueda presentar. Los sistemas automáticos con elementos binarios se pueden realizar con tecnologías diferentes, entre las que se encuentran (no siendo las únicas): El método tradicional de la lógica cableada (fuentes de tensión, contactores, relés y sus contactos principales y auxiliares). El método matemático de las tablas de verdad. El diagrama lógico de bloques. Las ecuaciones lógicas. Los métodos mencionados son los más interesantes a la hora de realizar los automatismos sencillos que vamos a necesitar en muchas aplicaciones domóticas. Cualquier relación, por compleja que sea, entre los elementos de las instalaciones automatizadas (lógica de automatismos) para definir el comportamiento de la instalación en conjunto se puede expresar como la unión de las relaciones más básicas entre dos elementos (funciones lógicas básicas), ampliada al número total de elementos que sean necesarios. De esta forma conseguimos definir un sistema automatizado con un funcionamiento tan complejo como queramos. Es muy interesante conocer los cuatro métodos de expresión de las funciones lógicas, dado que para los pequeños automatismos aún se emplean habitualmente, por su sencillez y economía, pequeños circuitos de lógica cableada basados en relés y contactores, a la vez que muchos microcontroladores se pueden programar con un lenguaje prácticamente idéntico a los esquemas de lógica cableada, llamado lenguaje de contactos. Asimismo, el diagrama lógico de bloques y las ecuaciones lógicas constituyen otros dos lenguajes de programación de microcontroladores, también llamados lenguaje de programación por bloques lógicos y lenguaje de comandos o lista de instrucciones. 12
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
Por último, el método de expresión de las funciones lógicas mediante tablas de verdad será útil a la hora de diseñar sistemáticamente pequeños automatismos que respondan a pequeñas necesidades, en función de los estados que deben tomar las salidas del sistema automático a partir de los estados de las entradas del mismo. Partiendo de las tablas de verdad seremos capaces, como veremos más adelante, de aplicar procedimientos de simplificación de las funciones lógicas que nos puedan salir, con objeto de obtener los circuitos de lógica cableada o los programas de automatización de microcontrolador del tamaño más pequeño posible que nos permitan solucionar la necesidad de automatización de la forma más sencilla y por tanto más económica posible.
Funciones lógicas básicas A continuación vamos a estudiar las funciones lógicas básicas, y cómo se combinan para formar funciones lógicas más complejas, expresadas simultáneamente con los cuatro métodos que hemos mencionado.
FUNCIÓN “NOT”, NEGACIÓN o INVERSIÓN La función NOT es la más sencilla. Devuelve en su salida la variable que encuentra en su entrada, pero negada. Expresada con su tabla de verdad queda:
Como puedes observar, la tabla de verdad se compone de dos partes diferenciadas: a la izquierda se colocan las columnas de las entradas, en este caso la de “a”, que representa la variable de entrada a la función, que puede tomar los valores expresados en su columna (0 y 1), y la columna de la salida, que siempre designaremos como “S” y que representa la variable de salida de la función. En las columnas de las entradas colocaremos siempre todos los valores posibles que puedan tomar las variables de entrada de la función lógica. Como vemos, la salida de la función NOT o NEGACIÓN es un 1 cuando la entrada es un 0 y un 0 cuando la entrada es un 1. Expresada mediante la lógica cableada queda:
13
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
“a” representa la variable de entrada a la función lógica, representada en este caso como un pulsador. Tomará el valor 1 si el pulsador está accionado y 0 si no lo está. La salida está representada en este esquema por el piloto de señalización “S”. Para realizar esta función en lógica cableada es necesario intercalar un relé intermedio que denominamos en este caso “K”. El funcionamiento es el siguiente: pulsamos “a” (establecemos un 1 en la variable “a” de entrada a la función lógica), y la tensión V, existente en la línea horizontal superior, aparece en el borne de la bobina del relé intermedio “K”. Como el relé intermedio está conectado en su otro borne (el inferior) a 0 voltios, la bobina del relé se encuentra ahora sometida a su diferencia de tensión nominal V (diremos solamente “tensión” en adelante), con lo que sus contactos cambian de estado y el contacto normalmente cerrado representado por K negada (la negación se expresa con una línea horizontal encima de la letra que representa a la variable), ahora se abre. En resumen: si no pulsamos “a” entonces a = 0 y como el contacto K negado está cerrado, S = 1, dado que sí le llega tensión. Y al contrario, cuando pulsamos “a”, a = 1 y S = 0, dado que K recibe tensión y K negado se abre, ya no recibe tensión, por lo que S = 0. La función NOT se puede expresar en lógica cableada de forma más sencilla si queremos negar solamente la entrada de un pulsador, escogiendo en el pulsador un contacto que sea normalmente cerrado con la salida conectada directamente a él. La ventaja de expresarla mediante un relé intermedio y un contacto normalmente cerrado de este relé reside en que de esta forma podremos negar cualquier función lógica que se encuentre en la línea de mando del relé intermedio. A partir del esquema eléctrico cableado es muy sencillo deducir las ecuaciones lógicas que expresan la función lógica: tendremos en cuenta que tanto las bobinas de los relés/contactores como los pilotos de señalización (así como cualquier consumo eléctrico que se coloque directamente sobre la línea de 0 V del esquema), se tratarán como salidas en las ecuaciones lógicas e irán representadas a la izquierda del igual de la ecuación. Por otra parte, las condiciones lógicas (asociaciones serie-paralelo y mixtas) que vayan cableadas por encima de los consumos se representarán a la derecha del igual, con las condiciones: Las ramas en paralelo equivalen a la función suma en la ecuación lógica. Los elementos (o conjuntos de elementos) en serie irán representados como multiplicaciones en la ecuación lógica. Por lo tanto, en el esquema anterior, tendremos dos salidas: K y S. La ecuación lógica para K es: K=a Dado que encima del consumo de la bobina de K sólo está el contacto del pulsador que representa a la variable de entrada “a”. Para S, la ecuación lógica es: S = K 14
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
En donde la barra horizontal encima de K indica que la variable está negada (cuando K valga cero, K valdrá 1, y viceversa). Y como K = a según la ecuación anterior, podemos sustituir en esta última, y donde dice K poner a, con lo que queda la ecuación lógica final: S = a
Ya sólo nos queda representar la función lógica negación según el cuarto método: el diagrama lógico de bloques. Veamos; para la negación se utiliza el símbolo siguiente:
El círculo que va a la derecha del bloque de la función es el que denota la negación. En resumen, la función lógica básica NEGACIÓN nos quedaría expresada según los cuatro métodos de esta forma:
Tabla de verdad
Diagrama eléctrico cableado
Ecuación lógica
Diagrama lógico de bloques
S=a
FUNCIÓN “OR” O SUMA LÓGICA La función OR tiene como entradas, al menos, a dos variables binarias. Su salida es 0 si todas las variables binarias de entrada son 0, siendo 1 siempre que al menos una de ellas sea 1 (si fuesen 1 dos o más de las variables de entrada también sería 1 la salida). Veamos cómo se expresa esta función lógica básica según los cuatro métodos.
Tabla de verdad de la función OR:
15
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
En donde se ve que ahora las entradas son dos, “a” y “b”, y la salida es “S”. S es cero solamente cuando a y b son cero las dos simultáneamente, y es uno cuando cualquiera de las dos o ambas simultáneamente son uno, como se definió.
En el diagrama eléctrico cableado, recordemos que la suma corresponde a colocar dos ramas en paralelo, con lo que tendremos que conectar los contactos que representan las dos entradas eléctricamente en paralelo. Veamos:
Las variables de entrada, “a” y “b”, se han representado por los contactos eléctricos de dos pulsadores. La salida, dado que esta función no incluye la negación, se puede representar directamente por el piloto de señalización “S”, sin necesidad de un relé o contactor auxiliar K, como en la función lógica básica anterior. Como puedes observar, la salida (el piloto S) es 1 (recibe tensión y por lo tanto se enciende) cuando uno cualquiera de los contactos se cierra (el valor de su variable de entrada es 1) o cuando lo hacen los dos a la vez. Según la ecuación lógica, recordemos que la función lógica OR equivale a la suma binaria, por lo tanto la ecuación lógica quedaría:
S=a+b Y por último, según el esquema lógico de bloques , el bloque lógico que corresponde a la función lógica OR es el siguiente:
Resumiendo, la función lógica básica OR se representa según los cuatro métodos como se muestra en la tabla siguiente:
Tabla de verdad
Diagrama eléctrico cableado
Ecuación lógica
S=a+b
16
Diagrama lógico de bloques
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
FUNCIÓN “AND” O PRODUCTO LÓGICO La función AND tiene como entradas, al menos, a dos variables binarias. Su salida es cero cuando una de las entradas, al menos, sea cero. Su salida será 1 solamente cuando todas las variables de entrada sean también 1, simultáneamente.
Tabla de verdad de la función AND:
Verás que la variable de salida “S” es 1 solamente cuando las dos variables de entrada “a” y “b” son 1 simultáneamente. En el diagrama eléctrico cableado, colocaremos los dos contactos que representan a las dos variables de entrada eléctricamente en serie, de forma que la lógica coincida: solamente pasará la tensión a la salida (el piloto de señalización) cuando ambos contactos estén cerrados simultáneamente, es decir, cuando ambas entradas sean 1 simultáneamente (ambas accionadas). Quedaría como sigue:
En cuanto a la ecuación lógica, la función AND equivale a la multiplicación, de forma que si alguna de las variables que se multiplican son cero, el resultado (la variable de salida), también será cero. Solamente cuando todas las variables que se multiplican son uno la variable de salida también lo será. Quedaría:
S=axb Y según el esquema lógico de bloques , el bloque lógico que corresponde a la función AND es el siguiente:
17
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Resumiendo, para la función AND: Tabla de verdad
Diagrama eléctrico cableado
Ecuación lógica
Diagrama lógico de bloques
S=axb
FUNCIÓN “NOR” O SUMA LÓGICA NEGADA La función NOR o “suma negada” se consigue aplicando primeramente la función OR o suma y después la función NOT o negación. Consecuentemente, desarrollaremos su tabla de verdad a partir de las tablas de verdad de la OR y de la NOT como sigue:
Como la función lógica que estamos representando, la NOR, se compone de otras dos, la OR y la NOT, por este orden, primeramente calculamos en la columna OR el resultado de aplicar esta función a las dos entradas “a” y “b” y luego a esta columna le aplicamos la función NOT, dando como resultado la salida final de la función en la columna “S”. Puedes observar fácilmente que consiste justamente en la función opuesta de la OR. Para obtener el diagrama eléctrico cableado correspondiente a la función NOR recordaremos que el esquema eléctrico correspondiente a la OR se consigue poniendo las entradas en paralelo y el esquema eléctrico correspondiente a la NOT se consigue con un contacto normalmente cerrado de un relé intermedio; por lo tanto, combinando los dos para obtener la NOR tendremos:
18
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
Si te fijas en el funcionamiento del circuito comparado con la tabla de verdad, observarás que son coincidentes. Naturalmente, cuando “a” o “b” son uno (simultáneamente o por separado), la bobina del contactor K se activa, y el contacto normalmente cerrado de la columna siguiente se abre, con lo que el piloto S se apaga (la salida de la tabla de verdad es cero en esos tres casos). Solamente es uno cuando a y b son ambos cero, simultáneamente, pues sólo en este caso la bobina de K no recibe tensión (porque a y b están abiertos), y por tanto el contacto normalmente cerrado K permanece cerrado, llegando la tensión al piloto de salida (valor de la salida 1). La ecuación lógica de la función NOR es la siguiente: S = a + b
En donde puedes observar que la suma corresponde a la función OR y la barra horizontal superior indica la negación posterior a la suma. En cuanto al diagrama lógico de bloques , si partimos del bloque correspondiente a la función OR y le añadimos a la salida el círculo que indica la negación posterior, tendremos el bloque asociado a la función NOR.
En resumen, las cuatro formas de expresión de la función lógica básica NOR son:
Tabla de verdad
Diagrama eléctrico cableado
Ecuación lógica
S
Diagrama lógico de bloques
= a + b
FUNCIÓN “NAND” O PRODUCTO LÓGICO NEGADO De forma similar que con la función NOR, la función NAND se construye aplicando primero la función AND a las entradas y después la función NOT al resultado. 19
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
La tabla de verdad, la deducimos como en el caso anterior:
En cuanto al diagrama eléctrico cableado, necesitaremos también un relé intermedio dado que hay que negar el producto una vez realizado:
Si comparas el funcionamiento del esquema eléctrico cableado, verás cómo coincide: la salida (el piloto S), solamente es cero (se apaga), cuando el contacto normalmente cerrado K se abre; es decir, cuando la bobina de K recibe tensión, lo que sucede únicamente cuando a y b están accionados simultáneamente (cuando los dos son simultáneamente 1 en la tabla de verdad). La ecuación lógica de la función NOR queda: S = a
b
↔
Y su diagrama de bloques es, lógicamente:
En resumen, las cuatro formas de expresión de la función lógica básica NAND son:
Tabla de verdad
Diagrama eléctrico cableado
Ecuación lógica
S
20
= a x b
Diagrama lógico de bloques
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
Funciones lógicas generales En el apartado anterior has aprendido a expresar las funciones lógicas básicas en las cuatro formas de representación que más interesan para la solución de los problemas de instalaciones automatizadas: Tabla de verdad. Diagrama eléctrico cableado. Ecuación lógica. Diagrama lógico de bloques. Cualquier problema de automatización va a requerir relacionar los estados de los elementos de entrada (captadores de información) entre sí para obtener el estado que debe tener un elemento de salida como respuesta a dicha combinación. Esta relación, que puede ser cualquiera, dependiendo del problema de automatización que se nos presente, consiste en una función lógica general, que podremos expresar como combinación de las funciones lógicas básicas vistas en el apartado anterior. Con una aplicación concreta entenderemos mejor esta dinámica.
Ejercicio resuelto 1 APERTURA AUTOMÁTICA DE UNA PUERTA Imaginemos, por ejemplo, una instalación automatizada sencilla. Tenemos una puerta automática accionada por un motor eléctrico y queremos comandar la apertura de la misma (solamente la apertura en este ejercicio) en base a un detector de presencia próximo a la puerta con parada por final de carrera. Cada vez que se aproxime una persona a la puerta, el cilindro debe abrir la misma y cuando la persona ya haya pasado, el sistema debe volver a cerrarla, quedando en espera de un nuevo ciclo. El esquema sería el mostrado en el margen izquierdo. En donde “S” es la variable de salida, la orden que tenemos que definir para mandar al motor la apertura de la puerta. Cuando S sea 1, la puerta estará abriéndose y cuando S sea 0, permanecerá parada (fíjate que no decimos nada para el cierre de la misma; en este primer ejercicio de introducción nos ocupamos solamente de la apertura). Asimismo, “a” es la variable asociada al detector de presencia de la persona que se acerca a la puerta: cuando hay una persona próxima a la puerta a = 1 y cuando no hay nadie a = 0. Para que la puerta se abra, será condición indispensable que haya una persona delante de la misma; es decir, que a = 1. Y “b” es el final de carrera que detecta cuándo la puerta ha llegado al final de su recorrido de apertura. Cuando la puerta haya llegado al final y esté com21
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
pletamente abierta entonces pisará el final de carrera b y éste tomará el valor b = 1. Para que la puerta esté abriéndose será condición indispensable que b = 0. Y cuando b = 1 se deberá parar. Este ejemplo es de sencilla solución, veamos: la función lógica que soluciona nuestro problema debe expresar que para que S = 1 (es decir, que el motor se ponga en marcha y que la puerta se abra) deberá cumplirse que a = 1 (es decir, que el detector de presencia esté detectando que hay una persona delante de la puerta) y que b = 0 (es decir, que la puerta no haya llegado aún al final de su recorrido, puesto que cuando esté en el final será b = 1). Veamos cómo se expresa esta función lógica con su forma de tabla de verdad:
Fíjate cómo a la izquierda de la tabla de verdad hemos colocado una columna que refleja el número de estado por el que va pasando el sistema. Las dos columnas siguientes corresponden a las variables de entrada (detector de presencia y final de carrera) y la columna final al valor que tiene que tomar la salida en función de las variables de entrada. Veamos qué significa cada estado. El primer estado será siempre el estado inicial; es decir, qué valor toman las variables, tanto de entrada como de salida, en el primer momento sin que aparezcan aún órdenes en el sistema (sin que aparezca la persona delante del detector de presencia). La salida deberá ser cero porque el sistema estará siempre en reposo en el estado inicial. En el segundo estado observamos que lo siguiente que pasa es que la persona aparece frente a la puerta y el detector de presencia se activa, es decir, a = 1. Como la puerta aún no se ha movido, no ha podido llegar al final de su recorrido y el valor del final de carrera será, consecuentemente, b = 0. En estas condiciones, la salida cambiará a S = 1; es decir, se dará orden de marcha al motor y la puerta se empezará a mover. El siguiente estado que sucede consiste en que la puerta llega al final de su recorrido y el final de carrera b lo detecta, con lo que su valor cambia a b = 1. En este momento el motor deberá parar, lo que se refleja en el mismo estado en el valor de S, que ahora es S = 0. Con este último paso (estado), hemos completado el ejemplo de automatización que se proponía; la puerta ya ha llegado al final de su apertura al detectar una persona en sus inmediaciones. Y hemos deducido cuál es la tabla de verdad que corresponde a la función lógica que lo soluciona:
22
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
A partir de la tabla de verdad es sencillo deducir la ecuación lógica que corresponde a la misma función lógica, si seguimos el procedimiento de los MINTERM. Este procedimiento consiste en que por cada “1” que aparece en la columna de las salidas obtendremos un término compuesto por tantas variables que se multiplican como variables tenga el sistema. Todos los términos que aparezcan deducidos de los unos de la columna de las salidas se suman entre sí para dar la función lógica expresada como ecuación lógica. Por ejemplo, en la tabla de verdad del ejemplo, sólo hay un 1 en la columna de salidas, por lo que en la ecuación lógica aparece solamente un término compuesto por dos variables (las dos variables de entrada de la tabla de verdad) que se multiplican. Entonces, la ecuación lógica queda como sigue: S = a ↔ b
Como puedes observar, la ecuación lógica satisface el funcionamiento del ejemplo solamente cuando a = 1 (cuando el detector detecta presencia de persona cerca de la puerta) y simultáneamente b = 0 (cuando la puerta no está en su posición de apertura total y por tanto no acciona el final de carrera), y por tanto b = 1 será 1 el valor de la salida S por lo que el motor de accionamiento se pondrá en marcha. A partir de esta ecuación lógica es sencillo desarrollar el esquema eléctrico en lógica cableada que corresponde a esta función lógica; recuerda que la multiplicación corresponde a colocar los contactos auxiliares en serie y la negación de una variable de entrada corresponde a escoger el contacto auxiliar asociado a esa variable de entrada como normalmente cerrado. Así pues, el esquema eléctrico cableado correspondiente a la función lógica del ejemplo, quedaría:
Observa que también el esquema eléctrico satisface los requisitos de la lógica de la automatización: solamente cuando a = 1 (cuando el detector detecte presencia) el contacto a cambiará su posición a cerrado y dejará pasar la tensión V a la entrada del contacto b. Simultáneamente, debe ser b = 0 (la puerta no llega al final de su recorrido y no pisa el final de carrera b) para que el contacto normalmente cerrado b no se abra y comunique la tensión V a la bobina del contactor S, que arrancará el motor para que se abra la puerta. Aunque la variable de entrada b aparece negada en la ecuación lógica, verás que en el esquema eléctrico cableado no se coloca esta negación en el nombre del contacto b, dado que esta negación ya viene especificada en el símbolo que expresa que b es un contacto normalmente cerrado. 23
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
E, igualmente, el diagrama lógico de bloques quedaría como sigue:
Como en los casos anteriores, se trata de la misma función lógica, que también satisface los requisitos de funcionamiento de este sencillo ejemplo de automatización.
Obtención de la función lógica para una aplicación concreta. Resolución de problemas de automatización. Ejercicios resueltos En el ejemplo anterior hemos descrito el procedimiento usual para diseñar un sistema automático sencillo mediante los siguientes pasos:
1. Deducción de la tabla de verdad a partir de la definición del funcionamiento del sistema automático. 2. Obtención de la ecuación lógica con MINTERM o MAXTERM a partir de la tabla de verdad. 3. Obtención del esquema eléctrico cableado y del diagrama lógico de bloques a partir de la ecuación lógica. Para la deducción de la tabla de verdad a partir del funcionamiento del sistema, debemos tener en cuenta las siguientes condiciones: Representaremos en primer lugar el estado inicial, en el que aún no se da la orden de marcha del sistema y las salidas permanecen en reposo. Un estado (que intuitivamente viene a ser aproximadamente una determinada “situación de funcionamiento del sistema automático”) viene definido por una determinada combinación de variables de entrada. Y cada estado se corresponde con una fila de la tabla de verdad. El paso de un estado al siguiente lo determina el cambio de una sola de las variables de entrada. Por tanto, de un estado al siguiente (de una fila de la tabla de verdad a la siguiente) solamente podrá cambiar una sola de las variables de entrada. Más adelante, cuando definamos los sistemas combinacionales y secuenciales, iremos añadiendo condiciones a la formación de la tabla de verdad. A la formación de la tabla de verdad le sigue la obtención de la ecuación lógica con MINTERM. La ecuación lógica se puede expresar también en forma de MAXTERM, como verás a continuación.
24
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
Tanto el método MINTERM como el MAXTERM se denominan FORMAS CANÓNICAS DE EXPRESIÓN DE LA ECUACIÓN LÓGICA , porque todos los términos en ambas formas van a contener a todas las variables de entrada de la función lógica. Veamos. Con el método MINTERM, la ecuación lógica se va a componer de términos que se suman entre sí, cada uno correspondiente a un uno de la columna de las salidas. Cada uno de estos términos, a su vez, se compondrá de una multiplicación de todas las variables de entrada, negadas o no en función de que su valor en la fila correspondiente sea cero o uno, respectivamente. Lo vemos con un ejemplo: Tenemos la tabla de verdad:
El término correspondiente al 1 de la columna de la salida de la segunda fila se corresponde con las variables a, b y c igual a 0 y d igual a 1, con lo que nos dará: a ↔ b ↔ c ↔ d, y el término correspondiente al 1 de la cuarta fila tiene las variables a y b igual a 0 y las c y d igual a 1, con lo que nos dará: a ↔ b ↔ c ↔ d. Las otras dos filas no aportan ningún término a la ecuación porque el valor de su salida es 0. La ecuación lógica expresada como MINTERM quedará: S = a ↔ b ↔ c ↔ d + a
↔
b ↔ c ↔ d
Con el método MAXTERM, la ecuación lógica se va a componer de términos que se multiplican entre sí, dentro de sus respectivos paréntesis, cada uno correspondiente a un cero de la columna de las salidas. Cada uno de estos términos, a su vez, se compondrá de una suma de todas las variables de entrada, negadas o no en función de que su valor en la fila correspondiente sea uno o cero, respectivamente. Veamos en el caso de la tabla de verdad anterior. El término correspondiente al 0 de la columna de salida de la primera fila se corresponde con todas las variables a, b, c y d iguales a 0, con lo que nos dará: a + b + c + d, y el término correspondiente al 0 de la tercera fila tiene las variables a, b y d iguales a 0 y la variable c igual a 1, con lo que nos dará: a + b + c + d. La ecuación lógica expresada como MAXTERM quedará: S = ( a
+ b + c + d) ↔ ( a + b + c + d)
Y el último paso corresponderá a la obtención del esquema eléctrico cableado y del diagrama lógico de bloques a partir de la ecuación lógica, recordando las condiciones siguientes: Las variables de entrada, que se expresan directamente en la 25
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
ecuación lógica, en el esquema eléctrico se representan con contactos auxiliares y en el diagrama lógico de bloques con líneas que transportarán las tensiones correspondientes a los niveles lógicos 0 y 1. La operación de suma lógica de la ecuación lógica es equivalente a colocar los contactos auxiliares en paralelo en el esquema eléctrico y al bloque OR en el diagrama de bloques. La operación de producto lógico de la ecuación lógica es equivalente a colocar los contactos auxiliares en serie en el esquema eléctrico y al bloque AND en el diagrama lógico. La negación (inversión), que se expresa con una barra horizontal colocada sobre la variable negada en la ecuación lógica, se representa con un contacto normalmente cerrado en el esquema eléctrico y con el bloque lógico NOT en el diagrama lógico.
Ejercicio resuelto 2 Expresar la función lógica dada por la tabla de verdad siguiente en las otras tres formas de expresión de funciones lógicas (ecuación lógica, esquema eléctrico cableado y diagrama lógico de bloques). La tabla de verdad es:
SOLUCIÓN: Para obtener la ecuación lógica asociada a esta función lógica podemos emplear, por ejemplo, el método de los MINTERM, con lo que nos quedaría una ecuación lógica: S = a ↔ b + a ↔ b
Que se podría simplificar haciendo factor común de b, es decir: S = b ↔ ( a + a)
Y como según las reglas del álgebra de Boole (las puedes recordar consultando la unidad didáctica 4) es a + a = 1, nos queda: S = b
Que es la ecuación lógica más simplificada correspondiente a esta función lógica. Si la función lógica fuese más complicada (expresada en una tabla de 26
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
verdad con más columnas y más términos igual a 1 en la columna de las salidas), la simplificación hubiese sido mucho más compleja, con lo que tendríamos que aplicar uno de los procedimientos de simplificación existentes, como el que se expone en el siguiente apartado. Una vez disponemos de la ecuación lógica, el esquema eléctrico cableado es sencillo:
En cuanto al diagrama lógico de bloques es el más sencillo posible:
En donde el bloque que hemos empleado, el más sencillo posible, el bloque identidad, ofrece a su salida la misma variable que le llega a la entrada. Es equivalente a conectar con una línea la salida con la entrada.
Ejercicio resuelto 3 Expresar la función lógica dada por la tabla de verdad siguiente en las otras tres formas de expresión de funciones lógicas (ecuación lógica, esquema eléctrico cableado y diagrama lógico de bloques).
Obtenemos la función lógica, de nuevo, mediante el método de los MINTERM, resultando: S = a ↔ b ↔ c + a ↔ b ↔ c + a ↔ b ↔ c 27
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
El esquema eléctrico cableado quedaría (si no realizamos ninguna simplificación):
Con lo que vemos que conforme se va complicando un poco la función lógica a representar, tanto la ecuación lógica como el esquema eléctrico cableado, como el diagrama lógico de bloques (que a continuación se va a representar), se complican enormemente. El diagrama lógico de bloques quedaría:
En donde hemos empleado bloques funcionales sumadores y multiplicadores de tres entradas.
Simplificación de las funciones lógicas. Ejercicios resueltos Las ecuaciones lógicas que se obtienen a partir de las tablas de verdad con los métodos MINTERM y MAXTERM son muy grandes, por lo que su realización en forma de esquema eléctrico cableado y diagrama lógico de bloques sería excesivamente complicada y costosa. Es muy conveniente emplear algún método de simplificación de funciones lógicas para expresar la solución de nuestro problema de instalación automatizada con ecuaciones lógicas, esquemas eléctricos y diagramas lógicos de bloques que sean lo más sencillos posible, proporcionándonos un ahorro máximo en tiempo y coste. Uno de estos métodos consiste en el empleo de las TABLAS DE KARNAUGH una vez expresada nuestra función lógica en forma de tabla de verdad. El método de Karnaugh parte de la tabla de verdad y para cada variable de salida, construye una tabla de Karnaugh en la que se representan los ceros y los unos de la variable de salida. Las tablas de Karnaugh correspondientes a funciones lógicas de dos, tres, cuatro y cinco variables serían como sigue: 28
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
Tabla de Karnaugh de 2 variables:
Tabla de Karnaugh de 3 variables:
Tabla de Karnaugh de 4 variables:
Tabla de Karnaugh de 5 variables:
Para funciones lógicas que impliquen más de 5 variables el método de simplificación por tablas de Karnaugh no es funcional, por lo que no se suele aplicar. Observa que al representar en la primera fila y en la primera columna de la tabla todas las posibles combinaciones de las variables de entrada, no lo hemos hecho según el código binario natural, sino según el código reflejado de Gray, que estudiamos al principio de la unidad. Esto es porque las casillas de la tabla de Karnaugh deben ser adyacentes para que el método de simplificación sea válido. Que las casillas de la tabla sean adyacentes quiere decir que al cambiar de una casilla a otra que esté contigua los valores de la combinación de variables de entrada que corresponden a ambas casillas sólo cambien en una sola variable. Conseguimos asegurar esto si utilizamos el código reflejado de Gray, como se acaba de exponer, ya que este código tiene la propiedad de que de un número expresado en él al siguiente correlativo solamente cambia el valor de una variable. El primer paso para realizar la simplificación consiste en pasar la información de la tabla de verdad a la tabla de Karnaugh. Si nuestra tabla de verdad tiene más de una variable de salida (en la tabla de verdad estaríamos aprovechando las mismas entradas para expresar dos funciones lógicas distintas), formaremos una tabla de Karnaugh para cada una de ellas. En cada casilla de la tabla de Karnaugh iremos colocando los unos y los ceros que encontremos en nuestra tabla de verdad. Por ejemplo, a la siguiente tabla de verdad: 29
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Ejercicio resuelto 4 Simplificar la función lógica dada por la tabla de verdad siguiente.
SOLUCIÓN: Le correspondería la siguiente tabla de Karnaugh:
Una vez representada la información de la tabla de verdad en la tabla de Karnaugh, agruparemos los unos que nos salgan siguiendo las siguientes condiciones: Se agruparán solamente las celdas que contengan los unos. Todos los unos deben quedar agrupados en algún grupo. Iremos haciendo los grupos desde el más grande posible hasta el más pequeño (si queda algún uno sin que se pueda agrupar en un grupo con otros unos, formará un grupo el solo). Las celdas se pueden agrupar siempre que sean adyacentes entre sí; es decir, de una celda a otra celda contigua en vertical u horizontal solamente puede variar una de las variables de entrada que la definen. El número N de unos que pueden formar un grupo debe ser una potencia de dos, es decir, debe ser 2 elevado a un número entero (N = 2n). Por tanto, los grupos pueden estar compuestos por 1, 2, 4, 8, 16... celdas en las que aparezca un uno. Los grupos que se formen deben ser cuadrados o rectangulares, no pueden tener forma de esquina, o agrupar celdas lejanas con ceros por medio. Entonces, para el caso de la tabla de Karnaugh del ejemplo, se puede realizar solamente un grupo, formado por los dos unos de la misma. Veamos:
30
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
Una vez obtenidos los grupos, deduciremos la ecuación lógica simplificada en base a las reglas siguientes:
1. La ecuación lógica simplificada está compuesta por una suma de términos. 2. Cada término que se suma está compuesto a su vez por una multiplicación de variables de entrada y se deduce de cada grupo de celdas que hemos señalado en la tabla de Karnaugh. 3. Para obtener el término que corresponde a un grupo nos fijaremos en las variables que corresponden a cada uno dentro del grupo, individualmente de variable en variables, de la forma siguiente: a) Si una variable no varía para ningún uno de nuestro grupo (la variable que corresponde a todos los unos tiene el mismo valor), entonces aparecerá en el término correspondiente. Y si además tiene el valor 1, aparecerá sin negar, y si tiene el valor 0, aparecerá negada. b) Si una variable sí cambia de un uno a otro dentro de nuestro grupo (la variable en cuestión no es la misma para todos los unos del grupo), entonces no aparecerá en el término correspondiente. Veamos cómo se calcula en el ejemplo que estamos resolviendo: Tenemos un solo grupo, con lo que la ecuación lógica se compondrá de un solo término. Dentro del término, observamos cada variable individualmente para todos los unos del grupo: Variable “a” (sus valores aparecen en la primera fila de la tabla, en su parte superior): toma valor 0 para el primer uno del grupo y valor 1 para el segundo uno de grupo, por lo que ha variado de una celda a otra del grupo: LA VARIABLE “a” NO APARECE EN EL TÉRMINO CORRESPONDIENTE AL GRUPO. Variable “b” (sus valores aparecen en la primera columna de la tabla, en su parte izquierda): toma valor 1 para el primer uno del grupo y también toma valor 1 para el segundo uno del grupo: SÍ APARECE EN EL TÉRMINO CORRESPONDIENTE AL GRUPO. Y como el valor que toma la variable es 1, LA VARIABLE “b” APARECE SIN NEGAR. Por lo tanto, la ecuación lógica de nuestro ejemplo es:
S=b
Ejercicio resuelto 5 Vamos a desarrollar otro ejemplo con una función lógica compuesta por tres variables. Su tabla de verdad es la siguiente (se pide simplificar la función lógica): 31
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
SOLUCIÓN: La tabla de Karnaugh que corresponde a esta función lógica (de tres variables) es como sigue:
En donde podemos hacer un grupo de cuatro unos (cuatro es un número permitido de celdas porque 2 2 = 4). La forma del grupo es cuadrada, sin esquinas. Y todos los unos contiguos del grupo son adyacentes. El grupo que hemos formado es entonces válido. Como tenemos solamente un grupo, en la ecuación lógica obtendremos únicamente un término. Para obtener el término, nos fijamos de una en una en cómo varía el valor de las variables para todos los unos del grupo. Veamos: Variable “a” (sus valores aparecen en el primer dígito de los dos que aparecen en cada celda de la fila superior de la tabla): toma el valor cero para el uno de la celda superior izquierda y el valor uno para el uno de la celda superior derecha del grupo, por lo tanto ha variado de una celda a otra del grupo. Ya no hace falta seguir con el análisis: LA VARIABLE “a” NO APARECE EN EL TÉRMINO CORRESPONDIENTE AL GRUPO. Variable “b” (sus valores aparecen en el segundo dígito de los dos que aparecen en cada celda de la fila superior de la tabla): toma el valor uno para los cuatro unos del grupo, por lo que su valor no cambia dentro del grupo: SÍ APARECE EN EL TÉRMINO CORRESPONDIENTE AL GRUPO. Y como el valor que toma la variable es 1, LA VARIABLE “b” APARECE SIN NEGAR. Variable “c” (sus valores aparecen en cada celda de la columna de más a la izquierda de la tabla): toma el valor 0 para el uno de la celda superior izquierda del grupo y toma el valor 1 para el uno de la celda inferior izquierda del grupo, por lo tanto ha variado de una celda a otra del grupo. Ya no hace falta seguir con el análisis: LA VARIABLE “c” NO APARECE EN EL TÉRMINO CORRESPONDIENTE AL GRUPO. 32
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
Por lo tanto, la ecuación lógica de nuestra función lógica se compone de un solo término (solo hemos formado un grupo), que tiene una sola variable (las otras han variado de una posición a otra del grupo). Y es, de nuevo, la función:
S=b
Ejercicio resuelto 6 Veamos otro ejemplo con una función lógica de tres variables. La tabla de verdad de la función lógica sigue a continuación (se pide simplificarla):
SOLUCIÓN: Y su tabla de Karnaugh asociada es:
En la que hemos realizado dos grupos: uno horizontal de cuatro unos y otro vertical con dos unos para incluir el uno de la fila inferior en un grupo. Fíjate que hay un uno que se ha empleado en dos grupos; esto es porque, de esta forma, el grupo que incluye al 1 de la fila superior es más grande (dos términos y no sólo uno), con lo que la ecuación lógica será más simplificada (cuanto más grandes sean los grupos que hagamos, más simplificado será el término que obtengamos del mismo y, por tanto, más simplificada la ecuación lógica). La ecuación lógica que corresponde a esta función lógica se obtiene de la forma: TÉRMINO CORRESPONDIENTE AL GRUPO ROJO: vamos analizando las variables celda a celda para todos los unos del grupo:
Variable “a” (sus valores aparecen en el primer dígito de los dos que aparecen en cada celda de la fila superior de la tabla): para el uno de la izquierda del grupo toma el valor 0, para el segundo uno del grupo toma también 33
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
el valor 0, para el tercer uno del grupo toma el valor 1; la variable ha cambiado. Ya no hace falta seguir con el análisis: LA VARIABLE “a” NO APARECE EN EL TÉRMINO CORRESPONDIENTE AL GRUPO ROJO. Variable “b” (sus valores aparecen en el segundo dígito de los dos que aparecen en cada celda de la fila superior de la tabla): para el uno de la izquierda del grupo toma el valor 0, para el segundo uno del grupo toma el valor 1; por lo tanto, el valor de la variable ha cambiado. Ya no hace falta seguir con el análisis: LA VARIABLE “b” NO APARECE EN EL TÉRMINO CORRESPONDIENTE AL GRUPO ROJO. Variable “c” (sus valores aparecen en cada celda de la columna de más a la izquierda de la tabla): toma el valor 0 para todos los unos del grupo rojo, por lo que su valor no cambia dentro del grupo rojo: SÍ APARECE EN EL TÉRMINO CORRESPONDIENTE AL GRUPO ROJO. Y como el valor que toma la variable “c” es cero, APARECE NEGADA EN EL TÉRMINO. Por lo tanto, el término correspondiente al grupo rojo es: c.
TÉRMINO CORRESPONDIENTE AL GRUPO VERDE: analizamos las variables celda a celda para todos los unos del grupo verde.
Variable “a”: para los dos unos del grupo verde la variable “a” toma el valor 1, por lo tanto, no cambia dentro del grupo verde: LA VARIABLE “a” SÍ APARECE EN EL TÉRMINO DEL GRUPO VERDE. Y como el valor que toma la variable “a” es 1, APARECE SIN NEGAR.
Variable “b”: para los dos unos del grupo verde la variable “a” toma el valor 1, por lo tanto, no cambia dentro del grupo verde: LA VARIABLE “b” SÍ APARECE EN EL TÉRMINO DEL GRUPO VERDE. Y como el valor que toma la variable “b” es 1, APARECE SIN NEGAR.
Variable “c”: toma el valor 0 para el uno de la celda superior del grupo verde y toma el valor 1 para el uno de la celda inferior del grupo verde, por lo tanto sí ha variado dentro del grupo: LA VARIABLE “c” NO APARECE EN EL TÉRMINO DEL GRUPO VERDE.
Entonces, el término correspondiente al grupo verde es: a ↔ b.
La ecuación lógica que corresponde a esta función lógica quedaría entonces: S = c + a ↔ b
34
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
Que es la ecuación lógica simplificada. ¿Cómo hubiese quedado la ecuación lógica sin simplificar? Si la obtenemos según los MINTERM, como aprendimos anteriormente, sería: S = a ↔ b ↔ c + a ↔ b ↔ c + a ↔ b ↔ c + a ↔ b ↔ c + a ↔ b ↔ c
Es fácil deducir que la simplificación que hemos conseguido al aplicar el método de las tablas de Karnaugh es considerable. Imagina cómo sería el esquema eléctrico cableado o el diagrama lógico de bloques que nos resolviesen esta función lógica para poder realizar la instalación automatizada. ¿Cuánto tiempo y coste nos hemos ahorrado al simplificar?
Ejercicio resuelto 7 Veamos ahora un ejemplo con una función lógica de cuatro variables. La tabla de verdad es la mostrada en el margen (realizar la simplificación):
SOLUCIÓN: La tabla de Karnaugh que corresponde a esta función lógica es:
En donde hemos hecho dos grupos de cuatro unos, el grupo verde del centro y el grupo rojo que reúne los cuatro unos de las esquinas. Fíjate que aunque los cuatro unos de las esquinas parece que no están juntos dentro de la tabla de Karnaugh, sin embargo sí que son unos contiguos, dado que de un uno a otro en vertical y horizontal sólo cambia el valor de una variable (lo puedes comprobar fácilmente). Por lo tanto, los podemos agrupar en un solo grupo. La ecuación lógica que corresponde a esta función lógica tendrá dos términos que se suman, uno procedente del grupo verde y el otro procedente del grupo rojo. Se obtienen como sigue: TÉRMINO CORRESPONDIENTE AL GRUPO VERDE: analizamos las variables celda a celda para todos los unos del grupo verde.
Variable “a”: para el uno de la celda superior izquierda del grupo verde, toma el valor 0 y para el uno de la celda superior derecha del grupo verde, toma el valor 1. Por lo tanto, la variable ha cambiado dentro del grupo. No es necesario seguir con el análisis: LA VARIABLE “a” NO APARECE EN EL TÉRMINO DEL GRUPO VERDE. 35
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Variable “b”: para el uno de la celda superior izquierda del grupo verde, toma el valor 1. Para el uno de la celda superior derecha, también toma el valor 1. Para los dos unos de la parte inferior de la tabla, la variable “b” también toma el valor 1. Por lo tanto, la variable “b” no cambia dentro del grupo verde: LA VARIABLE “b” SÍ APARECE EN EL TÉRMINO DEL GRUPO VERDE. Y además, como el valor que toma la variable “b” es 1, APARECE SIN NEGAR. Variable “c”: toma el valor 0 para el uno de la celda superior izquierda del grupo verde y toma el valor 1 para el uno de la celda inferior izquierda del grupo; por lo tanto, sí ha variado dentro del grupo. No hace falta seguir con el análisis: LA VARIABLE “c” NO APARECE EN EL TÉRMINO DEL GRUPO VERDE. Variable “d”: toma el valor 1 en las cuatro celdas del grupo verde. Por lo tanto, no ha variado dentro del grupo verde: LA VARIABLE “d” SÍ APARECE EN EL TÉRMINO DEL GRUPO VERDE. Y además, como su valor es 1, APARECE SIN NEGAR. Por lo tanto, el término correspondiente al grupo verde es: b ↔ d.
TÉRMINO CORRESPONDIENTE AL GRUPO ROJO:
36
Variable “a”: para el uno de la parte superior izquierda de la tabla, la variable “a” toma el valor 0, para el uno de la parte superior derecha de la tabla, la variable “a” toma el valor 1; por lo tanto, sí ha variado dentro del grupo: LA VARIABLE “a” NO APARECE EN EL TÉRMINO DEL GRUPO ROJO. Variable “b”: se puede observar que para las cuatro celdas del grupo rojo la variable “b” no cambia, por lo que: LA VARIABLE “b” SÍ APARECE EN EL TÉRMINO DEL GRUPO ROJO. Y además, como la variable “b” toma el valor cero dentro del grupo, APARECERÁ NEGADA EN EL TÉRMINO DEL GRUPO. Variable “c”: toma el valor 1 para el uno de la parte superior izquierda del grupo y toma el valor 0 para el uno de la parte inferior izquierda del grupo; por tanto, sí cambia dentro del grupo, por lo que: LA VARIABLE “c” NO APARECE EN EL TÉRMINO DEL GRUPO ROJO. Variable “d”: toma el valor 0 para los cuatro unos del grupo rojo; por lo tanto, no cambia dentro del grupo rojo, por lo que: LA VARIABLE “d” SÍ APARECE EN EL TÉRMINO DEL GRUPO ROJO. Y además, como toma el valor 0 dentro del grupo, APARECERÁ NEGADA EN EL TÉRMINO DEL GRUPO.
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
Por lo tanto, el término correspondiente al grupo rojo es: b ↔ d.
Y la ecuación lógica simplificada que corresponde a esta función lógica es: S = b ↔ d + b ↔ d
Como ejercicio puedes obtener de la tabla de verdad de este ejemplo la función lógica según su forma canónica MINTERM. Compara si realmente ha habido una gran simplificación al utilizar el método de la tabla de Karnaugh.
Sistemas combinacionales y secuenciales básicos. Ejercicios resueltos Los sistemas combinacionales se caracterizan porque una determinada combinación de las variables de entrada da como resultado siempre la misma combinación de las variables de salida. En otras palabras, el valor de las salidas en los sistemas combinacionales depende solamente del valor de las entradas y no del propio valor que las salidas hayan podido presentar en momentos anteriores. En cambio, los sistemas secuenciales se caracterizan porque el valor de sus salidas depende tanto del valor de las entradas en ese momento como del valor que las propias salidas hayan tenido en momentos anteriores. Veamos un ejemplo sencillo de sistema combinacional, planteándolo desde el inicio con los pasos que ya hemos estudiado para su resolución:
Ejercicio resuelto. EXTRACCIÓN DE AGUAS DE UN POZO DE RECOGIDA CON DOS BOMBAS Y ALARMA Tenemos el pozo de recogida de aguas de la figura siguiente: El pozo de recogida de aguas dispone de dos bombas de extracción de agua, B1 y B2, de un piloto rojo de alarma H1, y de tres detectores de nivel de agua (boyas de nivel), denominados n1, n2 y n3. El funcionamiento de la extracción de agua debe cumplir las siguientes condiciones: Si el nivel de agua se encuentra por debajo del detector n1, las bombas estarán paradas. Si el nivel de agua alcanza al detector n1, arrancará la bomba B1. 37
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Si el nivel de agua alcanza al detector n2, una sola bomba no tiene la fuerza suficiente para evacuar el caudal de agua entrante y arrancaremos también la bomba B2. Si el nivel de agua alcanza al detector n3, o bien el caudal de agua es excesivamente grande o hay algún fallo en el sistema, por lo que se encenderá un piloto rojo de alarma H1.
SOLUCIÓN: Tenemos tres entradas (los tres detectores de nivel) y tres salidas (las tres bombas y el piloto rojo de alarma). En primer lugar se confeccionan las tablas de verdad de nuestro problema según los condicionantes del mismo:
Solamente se han utilizado cuatro filas de la tabla de verdad, las correspondientes a las cuatro situaciones de funcionamiento de la extracción de aguas del pozo. En realidad, dado que hemos empleado tres columnas, una para cada salida, tenemos tres tablas de verdad, que nos darán lugar a tres tablas de Karnaugh, como sigue:
Al llevar la información de las tablas de verdad a las tablas de Karnaugh, hemos colocado todos los ceros y los unos, y dado que sólo contemplábamos las situaciones de funcionamiento que corresponden al ejemplo, se nos han quedado vacías cuatro celdas en cada tabla de Karnaugh. Esto quiere decir que los valores que puedan tomar las salidas en las celdas vacías (los valores de las salidas para esas combinaciones de variables de entrada) son indiferentes para la resolución de nuestro problema. Como son combinaciones que en nuestro sistema no se van a dar, rellenaremos las celdas vacías con “X” y consideraremos este valor como cero o como uno conforme más nos convenga a la hora de realizar los agrupamientos que más nos simplifiquen las ecuaciones de la función lógica. 38
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
Es decir, rellenaremos los huecos con “X” hasta obtener las siguientes tablas de Karnaugh:
Las agrupaciones que se han realizado incluyen las X necesarias para poder reunir todos los unos en los grupos más grandes posible (mayor simplificación); por tanto, estas X incluidas en los grupos se han considerado como si fuesen unos. Las X que no aportan ninguna ventaja al formar los grupos se han dejado fuera de los mismos y, por tanto, se han considerado como ceros. Veamos las ecuaciones lógicas que corresponden a las funciones lógicas de cada salida: B1 = n1 B2 = n2 H1 = n3 Con lo que las funciones lógicas expresadas como esquema eléctrico de mando quedarían:
Ejercicio resuelto. TALADRADO CON FIJACIÓN DE PIEZA EN CICLO CONTINUO Tenemos el sistema de taladro con fijación de pieza de la figura siguiente: El sistema debe funcionar según un ciclo continuo. El cilindro C1 avanzará a la derecha (C1 = 1) hasta que llegue al final de su carrera y la pieza a taladrar quede fijada (Fc2 = 1). Entonces el cilindro C2 bajará el taladro (C2 = 1) hasta el final de su carrera (Fc4 =1). Tras realizar el taladro, el cilindro C1 avanzará a la izquierda (C1 = 0) hasta llegar a su posición inicial (Fc1 = 1). Y por último, el cilindro C2 subirá el taladro (C2 = 0), hasta su posición inicial (Fc3 = 1). Tras esto, el ciclo comenzará de nuevo indefinidamente. 39
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
SOLUCIÓN: El primer paso consiste en reflejar el ciclo de funcionamiento del sistema como función lógica con su tabla de verdad. Cada una de las filas de la tabla de vedad representará un estado de funcionamiento del sistema. En el paso de un estado a otro solamente puede variar una de las variables de entrada.
ESTADO 1: representa el estado inicial del sistema, con los dos cilindros replegados. En este estado el cilindro C1 debe tener orden de salida (C1 = 1), y el cilindro C2 debe seguir replegado (C2 = 0). ESTADO 2: C1 se ha empezado a mover (su orden se dio en el estado anterior), y por tanto el final de carrera de replegado cambia su valor, siendo Fc1 = 0. Recuerda que el cambio de un estado al siguiente lo determina la variación de una sola de las variables de entrada (de los detectores). En este estado las órdenes tienen que seguir siendo las mismas, C1 = 1, para que siga saliendo, y C2 = 0, para que continúe replegado. ESTADO 3: lo determina el siguiente detector que cambia (Fc2) cuando C1 llega al final; entonces Fc2 = 1. En este estado las órdenes son: C1 = 1, para mantener la posición y sujetar la pieza, y C2 = 1 para que el taladro comience a bajar. ESTADO 4: la siguiente variable de entrada que cambia es el detector Fc3, cuando el taladro empieza a bajar. Las órdenes se deben mantener: C1 = 1, sujetando la pieza, y C2 = 1, con el taladro bajando. ESTADO 5: la siguiente variable de entrada que cambia es el detector Fc4, cuando el taladro llega a su posición final de taladrado, haciéndose Fc4 = 1. En este estado el cilindro C1 debe empezar a replegarse (C1 = 0), mientras el taladro permanece en la posición inferior (C2 = 1). ESTADO 6: la siguiente variable de entrada que cambia es el detector Fc2, cuando el cilindro C1 inicia su movimiento, Fc2 = 0. En este estado las órdenes no tienen que cambiar, C1 = 0, para que se siga replegando, y C2 = 1 permaneciendo el taladro en la posición inferior. ESTADO 7: la siguiente variable de entrada que cambia es el detector Fc1, cuando el cilindro C1 llega a su posición inicial, Fc1 = 1. En este momento C1 40
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
tiene que permanecer en su posición de replegado (C1 = 0) y C2 tiene que empezar a retirar el taladro de la pieza (C2 = 0). ESTADO 8: la siguiente variable de entrada que cambia es el detector Fc4, cuando el taladro empieza a subir. En este estado las órdenes tienen que permanecer igual, C1 = 0, permaneciendo replegado, y C2 = 0 para continuar con su movimiento de subida. ESTADO 9: la siguiente variable de entrada que cambia es el detector Fc3, cuando el taladro alcanza su posición inicial superior. En este estado el ciclo debe comenzar de nuevo, por lo que C1 debe comenzar a salir de nuevo (C1 = 1) y el taladro debe permanecer en su posición superior (C2 = 0). Tanto las variables de entrada (captadores de información) como las de salida (las órdenes del sistema) coinciden en este estado con las del estado 1, por lo que hemos completado el ciclo (el 9 y el 1 son en realidad el mismo estado), y el proceso vuelve a comenzar, siguiendo con el estado 2. Una vez expresadas las funciones lógicas del ciclo de funcionamiento del sistema como tablas de verdad (tenemos dos tablas de verdad en realidad, dado que tenemos dos variables de salida: C1 y C2), el siguiente paso consiste en simplificarlas mediante las tablas de Karnaugh.
Tabla de Karnaugh para la salida C1
Para obtener la ecuación lógica simplificada: Término correspondiente al grupo verde: Fc1 ↔ Fc4 Término correspondiente al grupo rojo: Fc3 Ecuación lógica simplificada: C1 = Fc3 + Fc1 ↔ Fc4
Tabla de Karnaugh para la salida C2
41
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Ecuación simplificada: Término correspondiente al grupo verde: Fc1 ↔ Fc3 Término correspondiente al grupo rojo: Fc2 C2 = Fc2 + Fc1 ↔ Fc3
Por lo tanto, la función lógica expresada como esquema eléctrico cableado queda:
Mientras que expresada como diagrama lógico de bloques quedaría:
Como se expuso anteriormente, los sistemas secuenciales se caracterizan porque el valor de sus salidas depende tanto del valor de las entradas en ese momento como del valor que las propias salidas hayan tenido en momentos anteriores. Para poder recordar el valor que una cierta variable tuvo en el momento anterior es necesaria una estructura denominada célula básica de memoria que realiza esta función. Expresada como esquema eléctrico cableado, la célula básica de memoria quedaría como sigue:
Veamos cómo actúa esta estructura. Al pulsar el pulsador “a” la tensión llega a la bobina del contactor “K” y su contacto normalmente abierto “K” se cierra, con lo que al dejar de pulsar “a” la tensión seguirá llegando a la bobina del contactor. Es decir, el valor de la salida del sistema “K” depende no solamente del 42
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
valor de la entrada “a”, sino también del valor que la propia salida del sistema tuvo en un momento anterior, mediante su contacto normalmente abierto “K”. Muestra de ello es que si dejamos de pulsar “a” entonces la salida no retornará a su valor original, sino que seguirá en su estado activado, manteniendo la “memoria” de que en un momento anterior se activó por medio del pulsador. Como ejercicio puedes expresar la célula básica de memoria en su forma de diagrama lógico de bloques. Cuando lo hayas realizado, puedes observar la solución en la figura siguiente:
Dado que en los sistemas secuenciales debemos tener en cuenta el valor de las salidas en el estado anterior para deducir el valor actual de las salidas, nuestro método de resolución de los problemas sencillos de automatización mediante la función lógica como tabla de verdad y su simplificación mediante tablas de Karnaugh se debe adaptar a ello. Al representar la evolución de los estados en la tabla de verdad, se sabrá que nos encontramos ante un sistema secuencial y no combinacional si se llega a un estado en el que la combinación de variables de entrada coincide con alguna de las combinaciones de variables de entrada anteriores y además las salidas son diferentes entre los dos estados en cuestión, no habiendo llegado al final del ciclo de funcionamiento del sistema. Al llegar a este punto habrá que añadir en la tabla de verdad dos columnas nuevas correspondientes a una nueva variable “ficticia” o “interna”: Una columna en la parte de las entradas, que representará el valor de dicha variable interna en el estado anterior. Se marcará en minúsculas con la denominación de la propia variable interna y el subíndice “e”. Una columna en la parte de las salidas, que representará el valor de esta variable interna en el estado actual. Se marcará en mayúsculas con la denominación de la propia variable interna y el subíndice “S”. En este momento se ha de recordar que para ir expresando la evolución de nuestro sistema estado a estado en la tabla de verdad se han de seguir respetando las reglas que enumeramos anteriormente al comienzo de la página 24. Recordemos: Para la d a partir del funcionamiento del sistema, debemos tener en cuenta las siguientes condiciones: Representaremos en primer lugar el estado inicial, en el que aún no se da la orden de marcha del sistema y las salidas per manecen en reposo. Un estado (que intuitivamente viene a ser aproximadamente una determinada “situación de funcionamiento del sistema 43
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
automático”) viene definido por una determinada combinación de variables de entrada. Y cada estado se corresponde con una fila de la tabla de verdad. El paso de un estado al siguiente lo determina el cambio de una sola de las variables de entrada . Por tanto, de un estado al siguiente (de una fila de la tabla de verdad a la siguiente) solamente podrá cambiar una sola de las variables de entrada.
Una vez hayamos añadido la variable interna tal como se ha expresado, debemos resolver la indeterminación que produce tener dos estados con la misma combinación de variables de entrada y de variables de salida, lo que se hará de la siguiente forma (supongamos que llamamos X a la variable interna que hemos añadido): Completaremos los valores de la variable Xe (en el lado de las entradas) con un 0 desde el estado inicial hasta el último estado expresado en la tabla (el que nos produce la indeterminación). En el último estado expresado en la tabla daremos a Xe el valor 1. Con esto habremos resuelto la indeterminación: ya no tenemos en la tabla de verdad dos estados con la misma combinación de variables de entrada, dado que los hemos diferenciado con nuestra nueva variable Xe. Sin embargo, en este momento se nos presenta un problema: desde el penúltimo estado al último resulta que nos cambian simultáneamente el valor de dos de las variables de entrada (la que cambiaba originalmente al definir el nuevo estado más la de la variable interna que acabamos de añadir). Esto no puede ser, debemos seguir respetando la regla que dice que en el cambio de un estado al siguiente solamente puede cambiar una de las variables de entrada. La forma de resolver este nuevo problema es la siguiente: añadiremos un nuevo estado entre el último y el penúltimo en donde cambiaremos solamente el valor de la variable interna y dejaremos igual todas las demás. De esta fo rma ya se respetará la regla recién infringida. Es un estado “ficticio”, porque no responde a un paso real en la evolución física de nuestro sistema, sino que es una necesidad matemática de nuestro método para poder resolver el problema. Los valores de la variable Xs no los completaremos hasta que la tabla de verdad refleje ya todos los estados del ciclo de funcionamiento del sistema. Lo mejor en este momento es poner en práctica este método de resolución de pequeños problemas secuenciales de automatización con un ejemplo.
Ejercicio resuelto. ENCENDIDO Y APAGADO DE UN PILOTO CON DOS PULSADORES Tenemos un piloto H que pretendemos activar con la pulsación de un pulsador S1. Al dejar de pulsar S1 el piloto debe permanecer encendido. Con la 44
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
pulsación de otro pulsador S2 el piloto se debe apagar y si dejamos de pulsar este segundo pulsador el piloto debe permanecer apagado.
SOLUCIÓN: El primer paso, como de costumbre, consiste en expresar la idea de funcionamiento de nuestro sistema de forma rigurosa en la evolución de estados que reflejaremos en la tabla de verdad, respetando las reglas expresadas anteriormente. Veamos:
ESTADO 1: en el estado inicial no está pulsado ninguno de los dos pulsadores y el piloto está apagado. ESTADO 2: pulsamos S1, variable cuyo cambio define el paso a este estado. El piloto se debe encender. ESTADO 3: dejamos de pulsar S1. Al cambiar de nuevo esta variable se determina el paso al nuevo estado. En esta situación el piloto debe permanecer encendido. Al llegar al estado 3 nos damos cuenta que la combinación de variables de entrada son iguales entre los estados 1 y 3 (en ambos estados S1 = 0 y S2 = 0), pero la salida es diferente en ambos (en el estado 0 es H = 0 y en el estado 3 es H = 1). Estamos, pues, ante un problema secuencial y no combinacional. Fíjate que en este problema la salida H no depende solamente del valor de las variables de entrada, sino también de cuánto valía la salida en un estado anterior, definición de los sistemas secuenciales. En este momento debemos añadir dos columnas a la tabla de verdad: una en la parte de las entradas y otra en la parte de las salidas.
Se completa el valor de Xe dando ceros a los estados 1 y 2 y dando un uno al estado 3 (el primero en que se produce la indeterminación). Veamos:
45
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Se ha resuelto la indeterminación entre los estados 1 y 3, ya que la combinación de variables de entrada (teniendo en cuenta ahora la nueva variable de entrada interna Xe) es distinta en los dos estados. Sin embargo, como se señaló anteriormente, ahora en el paso del estado 2 al 3 cambian dos variables de entrada, la S1, que pasa de 1 a 0 y la nueva Xe, que pasa de 0 a 1. Debemos resolver este problema añadiendo entre el estado 2 y el estado 3 un nuevo estado ficticio (que marcaremos como 2’), y que no corresponde a un estado real dado que al cambiar del 2 al 2’ solamente ha cambiado la variable interna Xe y no una variable física real del sistema. Es decir:
ESTADO 2’: se mantendrá el valor de la variable de salida H tal como estaba en el estado 2; es decir, igual a 1 en el ejemplo. En este momento se realizarán las dos comprobaciones: En toda la tabla de verdad, al pasar de un estado al siguiente solamente cambia el valor de una variable interna: VERDADERO. No hay ningún estado cuya combinación de variables de entrada coincida con la de ningún estado anterior, siendo distintas las variables de salida: VERDADERO (no lo hay). Una vez hechas estas comprobaciones, se continuará expresando la evolución de nuestro sistema en los estados representados como filas de la tabla de verdad (los valores de la variable Xs los definiremos cuando ya tengamos todos los estados expresados en la tabla de verdad y el ciclo comience a repetirse). En adelante, al expresar un nuevo estado de funcionamiento del sistema en cualquier problema, realizaremos siempre estas dos comprobaciones.
ESTADO 4: pulso S2 y el piloto se debe apagar. Mantendremos el valor de la variable Xe en 1 mientras no sea necesario que lo volvamos a variar (podríamos necesitar más adelante volver a diferenciar otros dos estados). Comprobaciones: Cambia solamente una variable de entrada del estado 3 al 4 :
VERDADERO, solamente cambia S2. 46
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
La combinación de variables de entrada del estado 4 no es igual a ninguna otra de la tabla de verdad, siendo distinta la salida H: VERDADERO; de hecho, no hay ninguna otra com-
binación igual de variables de entrada en toda la tabla. ESTADO 5: dejo de pulsar el pulsador S2 y el piloto H debe permanecer apagado. Comprobaciones: Cambia solamente una variable de entrada del estado 4 al 5 :
VERDADERO, solamente cambia S2. La combinación de variables de entrada del estado 5 no es igual a ninguna otra de la tabla de verdad, siendo distinta la salida H: en este caso es FALSO, dado que el estado 3 tiene
la misma combinación de variables de entrada, siendo distinta su variable de salida H (H = 1 en el estado 3 y H = 0 en el estado 5). Debemos resolver esta nueva indeterminación. Como ya hemos añadido una variable interna X, vamos a intentar resolver esta nueva indeterminación volviendo a cambiar el valor de esta variable y, si esto no fuese posible, nos veríamos obligados a añadir una nueva variable interna Y. Veamos:
Si damos el valor 0 a Xe en el estado 5, nos damos cuenta que, aunque la combinación de variables de entrada en el estado 5 es igual a la del estado 1, la salida H ahora también es igual, con lo que no se infringe la regla de tener dos estados con iguales combinaciones de variables de entrada y distinta variable de salida. Hemos resuelto la nueva indeterminación de esta forma. Sin embargo, ahora al cambiar del estado 4 al 5 nos cambian dos variables de entrada simultáneamente: S2 de 1 a 0 y Xe de 1 a 0. Lo resolvemos, como anteriormente, añadiendo un estado ficticio 4’ en el que cambiamos solamente el valor de la variable interna Xe.
47
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Como anteriormente, se ha dejado igual la variable de salida H en el estado 4’ que en el estado 4. Si volvemos a hacer las comprobaciones: Cambia solamente una variable de entrada del estado 4 al 4’ y del 4’ al 5: VERDADERO. La combinación de variables de entrada no es igual en estados distintos siendo distintas las salidas : VERDADERO. La
combinación de variables de entrada es igual en el estado 5 y en el estado 1, pero ahora las salidas no son distintas, son iguales. Esto no infringe la regla, sino que muestra que hemos llegado al fin del ciclo. Ahora queda por asignar los valores a la variable de salida Xs. Seguiremos las siguientes reglas: Si estamos en un estado real y el siguiente estado es real, daremos a Xs el mismo valor que a Xe del mismo estado real. Si estamos en un estado real y el siguiente estado es ficticio, daremos a Xs el mismo valor que tiene Xe en el siguiente estado ficticio. Si estamos en un estado ficticio, Xs tomará el valor que tenga Xe en el mismo estado ficticio. En el caso del ejemplo:
ESTADO 1: es un estado real y el siguiente estado, el 2, es también real; entonces Xs toma el mismo valor que la Xe del propio estado 1. Xs = 0. ESTADO 2: es un estado real y el siguiente estado, el 2’, es un estado ficticio; entonces Xs toma el valor de la Xe del estado ficticio 2’. Xs = 1. ESTADO 2’: es un estado ficticio. Entonces Xs toma el mismo valor que la Xe del propio estado ficticio 2’. Xs = 1. ESTADO 3: es un estado real y el siguiente estado, el 4, es también real; entonces Xs toma el mismo valor que la Xe del propio estado 3. Xs = 1. ESTADO 4: es un estado real y el siguiente estado, el 4’, es un estado ficticio; entonces Xs toma el valor de la Xe del estado ficticio 4’. Xs = 0. ESTADO 4’: es un estado ficticio. Entonces Xs toma el mismo valor que la Xe del propio estado ficticio 4’. Xs = 0. 48
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
ESTADO 5: es el mismo estado que el 1, dado que es el que cierra el ciclo. Xs vale lo mismo que en el estado 1. Ya está completa la función lógica que describe como tabla de verdad la evolución del problema secuencial de automatización. El siguiente paso consiste en realizar tantas tablas de Karnaugh como salidas tiene el sistema y simplificar para obtener las ecuaciones lógicas.
Tabla de Karnaugh para la variable H
Tabla de Karnaugh para la variable X
Como los valores de ambas salidas coincidían, lo hacen también sus tablas de Karnaugh y, consecuentemente, también lo harán sus ecuaciones lógicas simplificadas. Observa que hemos dado los valores de indeterminación X a las combinaciones de las entradas que no vienen especificadas en la tabla de verdad que expresa la evolución de nuestro sistema. Recuerda que esto nos permite utilizarlos como 0 ó 1 según nos convenga para conseguir una simplificación mayor de la ecuación lógica; es decir, para conseguir grupos más grandes dentro de la tabla de Karnaugh. La ecuación lógica simplificada es: H = X s = S1 + S2 ↔ Xe
Que corresponde al esquema eléctrico de mando:
Dado que las dos variables de salida, Xs y H, presentan la misma ecuación lógica, el circuito eléctrico que llega a cada una de ellas es exactamente el mismo, por lo que podemos sustituir el de H por un contacto normalmente abierto de Xs, obteniendo la misma funcionalidad y mayor simplificación. Como ejercicio, puedes obtener la misma función lógica expresada como diagrama lógico de bloques. 49
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Comprobación del funcionamiento del esquema obtenido Es fácil observar que el circuito cumple los requisitos del ejemplo. Si pulsamos S1, la tensión llega al contactor Xs y su contacto Xe se cierra, iluminándose el piloto H. Al dejar de pulsar S1 la tensión sigue llegando al contactor a través de Xe que está cerrado y de S2, con lo que el contactor se mantiene activo y el piloto encendido. Si pulsamos entonces S2, cortaremos la tensión a la bobina de Xs y sus contactos volverán a su posición de reposo (posición normal, que es abierta), con lo que el piloto se apagará. Este esquema eléctrico de mando se denomina MARCHA-PARO CON PRIORIDAD A LA MARCHA, dado que si se mantienen pulsados simultáneamente el pulsador de paro (S2) y el pulsador de marcha (S1), se observa que la tensión sigue llegando a la bobina del contactor, que se mantiene activo (en marcha).
Variación del ejercicio Cuando realizamos las agrupaciones en la tabla de Karnaugh del ejemplo, consideramos las X como unos porque nos ayudaban a realizar grupos mayores. Estas X nos permiten realizar una variación: si las consideramos como 0 estaremos imponiendo al sistema la condición de que cuando S1 y S2 sean simultáneamente 1 (la columna de las X en la tabla de Karnaugh corresponde a esta combinación de S1 y S2), la salida del sistema debe ser cero; es decir, el piloto debe estar apagado. En este caso llegaríamos a la solución del problema denominada MARCHA-PARO CON PRIORIDAD AL PARO, dado que si se pulsan ambos pulsadores a la vez el piloto estaría apagado. La solución sería entonces:
Tabla de Karnaugh para las variables Xs y H
Con lo que nos quedaría la ecuación lógica simplificada: H = X s = S1 ↔ S2
+ S2 ↔ Xe
Que se puede simplificar un poco más si sacamos factor común de S2, quedando: H = X s = S2 ↔ (S1 + Xe)
Fíjate que aunque las tablas de Karnaugh nos dan una ecuación con un alto grado de simplificación (ya las has comparado antes con las que se obtenían de forma canónica MAXTERM y MINTERM), es posible que no nos den la mayor simplificación posible. 50
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
El circuito eléctrico de mando correspondiente a esta función lógica sería:
En donde se ve que, efectivamente, si mantenemos pulsados simultáneamente S1 y S2, se corta la tensión que llega a Xs y no luce la salida H. Queda como ejercicio la obtención de los dos esquemas lógicos de bloques asociados al ejemplo.
Ejercicio resuelto. ACCIONAMIENTO DE PRENSA POR UN SÓLO PULSADOR Tenemos el sistema de la figura, que representa una prensa accionada por un solo pulsador: La prensa debe realizar el siguiente ciclo: al pulsar S1 el cilindro bajará y realizará su acción sobre la pieza colocada, tocando a la vez el final de carrera Fc1. En este momento el cilindro comenzará a subir hasta que llegue a su posición original, cuando el operario deja de accionar el pulsador, finalizando el ciclo de funcionamiento. Se piden las ecuaciones lógicas de funcionamiento del sistema y su representación en esquema eléctrico cableado y diagrama lógico de bloques.
SOLUCIÓN: El sistema tiene dos variables de entrada: S1 y Fc1, y una variable de salida: P. Expresión del ciclo de funcionamiento en la tabla de verdad:
ESTADO 1: estado inicial, aún no se pulsa S1 y el cilindro no está tocando Fc1. Por tanto, S1 = 0 y Fc1 = 0. El cilindro no debe recibir aún la orden de marcha, por lo que P = 1. 51
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
ESTADO 2: el operario acciona el pulsador de marcha (S1 = 1); por tanto, el cilindro debe recibir la orden de marcha (P = 1). ESTADO 3: el cilindro llega a su posición extrema; por tanto, toca el final de carrera (Fc1 = 1), momento en que debe desaparecer su orden de marcha para que comience su movimiento de retroceso (P = 0). ESTADO 4: la siguiente variable de entrada que cambia es Fc1, dado que al iniciar el movimiento de retroceso (la orden de retroceder se dio a P en el estado 3), el cilindro deja de tocar el final de carrera Fc1. Por tanto, S1 = 1, Fc1 = 0. En este momento la orden de P debe continuar siendo 0, para que el cilindro continúe con su movimiento de retroceso. Se comprobará ahora que los estados 4 y 2 tienen la misma combinación de variables de entrada (S1 = 1 y Fc1 = 0), pero con variable de salida con distinto valor (P = 1 para el estado 2 y P = 0 para el estado 4). Tenemos una indeterminación en el sistema que nos demuestra que nuestro sistema es SECUENCIAL. Por tanto, se debe añadir una variable interna X, desdoblada en la parte de las entradas (Xe) y en la parte de las salidas (Xs), para que las salidas en un determinado estado puedan tener en cuenta el valor de las mismas en un estado anterior.
Se ha dado a Xe el valor 0 en todos los estados excepto en el que se presenta la indeterminación, el estado 4, en que le hemos dado Xe = 1. La indeterminación queda resuelta. Sin embargo, ahora del estado 3 al 4 cambian dos variables de entrada simultáneamente, Fc1 de 1 a 0, y Xe de 0 a 1. Para resolver este problema se añadirá el estado ficticio 3, como sigue:
ESTADO 3’: estado ficticio; hemos cambiado la variable interna Xe solamente, con lo que ahora de un estado a otro solamente cambia una variable interna en todos los pasos. Si comprobamos en toda la tabla, veremos que ya no se repiten las combinaciones de variables de entrada con valores de la salida distintos ni hay pasos entre estados en los que cambien más de una variable de entrada. Por consiguiente, seguimos con la resolución del ciclo. 52
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
ESTADO 5: al llegar el cilindro a la posición inicial, el operario deja de pulsar S1 y el movimiento se detiene. En este estado S1 = 0 y P se mantiene en 0. Si nos fijamos en la combinación de entradas del estado 5, no es igual que la combinación del estado 1 (estado inicial), aunque el ciclo se haya completado. Necesitamos crear otro nuevo estado ficticio 5’ para que esto se cumpla y poder asignar a Xs sus valores correctamente. ESTADO 5’: cambiamos el valor de la variable Xe sin alterar lo demás para cerrar el ciclo (combinación de variables de entrada de 5’ igual que la del estado 1 con los valores de la salida iguales), y poder asignar los valores adecuados a Xs. Ahora el ciclo sí está cerrado y podemos asignar los valores a Xs:
ESTADO 1: estado real seguido de estado real; entonces Xs es igual a su propia Xe. Xs = 0. ESTADO 2: estado real seguido de estado real; entonces Xs es igual a su propia Xe. Xs = 0. ESTADO 3: estado real seguido de estado ficticio; entonces Xs es igual a la Xe del estado ficticio que le sigue. Xs = 1. ESTADO 3’: estado ficticio; entonces Xs es igual a su propia Xe. Xs = 1. ESTADO 4: estado real seguido de estado real; entonces Xs es igual a su propia Xe. Xs = 1. ESTADO 5: estado real seguido de estado ficticio; entonces Xs es igual a la Xe del estado ficticio que le sigue. Xs = 0. ESTADO 5’: es el estado que cierra el ciclo, el mismo que el estado inicial; por lo tanto, la Xs es la misma. Xs = 0. Observa que este estado se creó para 53
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
cumplir precisamente esta condición, que TODAS las variables de entrada fuesen iguales entre el estado que cierra el ciclo y el estado inicial, con la variable de salida también igual. El siguiente paso consiste en obtener las funciones lógicas simplificadas según las tablas de Karnaugh:
Tabla de Karnaugh para la salida P
En este caso solamente se ha podido hacer un grupo de un solo 1. La ecuación lógica de la salida P queda pues: P = S1
↔
Fc1
↔
Xe
Para la variable Xs:
Tabla de Karnaugh para la salida Xs
La ecuación lógica de la salida Xs queda: Xs = Fc1 + S1 ↔ Xe
Por tanto, el esquema eléctrico que soluciona el problema queda:
Ejercicio resuelto. ACCIONAMIENTO DE PRENSA CON UNA SOLA PULSACIÓN Si a la prensa del ejercicio de la página 51 le añadimos un segundo final de carrera para la detección de la posición de cilindro retraído, nos quedaría como se muestra en la figura. 54
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
La prensa debe realizar ahora el siguiente ciclo: al pulsar S1 debe comenzar su movimiento de bajada. Al dejar de pulsar inmediatamente el pulsador, la prensa continuará con su ciclo. Cuando llegue al final de su movimiento, y por tanto haya realizado la acción requerida sobre la pieza, accionará el final de carrera Fc2 y comenzará automáticamente su movimiento de replegado. Cuando esté totalmente replegada, tocará el final de carrera Fc1 y la prensa quedará dispuesta para la realización del siguiente ciclo al pulsar brevemente el pulsador S1. Se piden las ecuaciones lógicas de funcionamiento del sistema y su representación en esquema eléctrico cableado y diagrama lógico de bloques.
SOLUCIÓN: El sistema tiene tres variables de entrada: el pulsador S1 y los finales de carrera Fc1 y Fc2. Y tiene una salida: el accionamiento P del cilindro. El primer paso consiste en la expresión del ciclo de funcionamiento de la prensa en la forma de relación de estados que componen la tabla de verdad:
ESTADO 1: estado inicial; no se pulsa el pulsador S1, el cilindro se encuentra en su posición de reposo; es decir, totalmente replegado y por tanto tocando el final de carrera Fc1; por tanto, Fc1 = 1. Consecuentemente, Fc2 = 0. En este estado la prensa debe permanecer en reposo; es decir, con P = 0. Recuerda que al escribir los valores de todas las variables correspondientes a cada estado debes realizar las dos comprobaciones: ¿Cambian más de una variable de entrada de un estado a otro? ¿Se repiten dos combinaciones de variables de entrada entre dos estados siendo distintas sus salidas? Y actuar en consecuencia en función de las respuestas (consulta el contenido teórico del apartado correspondiente). ESTADO 2: el operario pulsa S1 (S1 = 1). El ciclo debe comenzar y C1 debe recibir la orden de marcha (C1 = 1). ESTADO 3: al iniciarse el movimiento del cilindro se deja de pisar Fc1; por lo tanto, pasa a ser Fc1 = 0. La orden del cilindro debe mantenerse para que 55
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
continúe su recorrido de avance. Este suceso es automático y, por tanto, muy rápido. Por ello consideramos que va antes del siguiente estado. ESTADO 4: el operario deja de pulsar S1; por lo tanto, pasa a ser S1 = 0. El cilindro debe continuar su recorrido y el sistema debe completar su ciclo. Por tanto P = 1 también. ESTADO 5: el cilindro llega a su posición extrema, la prensa realiza su acción sobre la pieza y se toca el final de carrera Fc2. Por tanto, pasa a ser Fc2 = 1. En este momento el cilindro debe dejar de recibir su orden de marcha para que comience su movimiento de replegado; por tanto, pasará a ser P = 0. ESTADO 6: el cilindro ha iniciado su movimiento de retroceso y por tanto se deja de pisar Fc2, siendo Fc2 = 0. El cilindro debe permanecer sin recibir orden de marcha, para que continúe su movimiento de replegado. En este momento, al realizar las dos comprobaciones que se han recordado tras el estado 1, nos damos cuenta de que la combinación de variables de entrada del estado 6 coincide con la del estado 4, siendo la salida diferente (P = 1 para el estado 4 y P = 0 para el estado 6). Por tanto, nuestro sistema es SECUENCIAL. Consecuentemente, debemos añadir una variable interna con la que reflejar la dependencia del valor de nuestras salidas en el estado actual del valor que presentaban en estados anteriores. La tabla de verdad queda:
En donde ya hemos dado el valor 0 a Xe en los estados del 1 al 5 y el valor 1 en el estado 6, en el que se presenta primeramente la indeterminación. Con esto la indeterminación queda resuelta pero vemos que del estado 5 al 6 ahora cambian dos variables de entrada, infringiendo la regla de cambio de un estado a otro: solamente debe variar una variable de entrada. Lo solucionamos añadiendo el estado ficticio 5’ en el que cambiamos primeramente el valor de la variable interna como sigue:
56
CONCEPTOS BÁSICOS DE PROGRAMACIÓN. LÓGICA BÁSICA
De esta forma queda resuelto el problema de la indeterminación. Observa que se ha dado a P el valor que tenía en el estado anterior (el 5). Es posible ahora continuar con el ciclo de funcionamiento:
ESTADO 7: el cilindro llega a su posición final de replegado, con lo que toca el final de carrera Fc1, siendo ahora Fc1 = 1. El valor de la salida P debe seguir siendo 0 para que el cilindro permanezca replegado hasta una nueva pulsación de S1. Como la combinación de variables de entrada en este estado no es igual que la del estado inicial (estado 1), se debe añadir un nuevo estado ficticio 7’ en el que cambiemos el valor de la variable ficticia y así podamos cerrar el ciclo, obteniendo, de esta forma, los valores correctos para la variable ficticia de salida Xs. ESTADO 7’: estado ficticio de cierre de ciclo. Se cambia solamente la variable de salida Xs según se ha comentado en el estado anterior. Una vez reflejados todos los estados que completan el ciclo en la tabla de verdad, es posible pasar a dar valores a la variable de salida Xs, según las reglas expuestas anteriormente.
ESTADO 1: estado real seguido de estado real; Xs = su propia Xe = 0. ESTADO 2: estado real seguido de estado real; Xs = su propia Xe = 0. ESTADO 3: estado real seguido de estado real; Xs = su propia Xe = 0. ESTADO 4: estado real seguido de estado real; Xs = su propia Xe = 0. 57
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
ESTADO 5: estado real seguido de estado ficticio; Xs = Xe del estado ficticio siguiente = 1. ESTADO 5’: estado ficticio; Xs = su propia Xe = 1. ESTADO 6: estado real seguido de estado real; Xs = su propia Xe = 1. ESTADO 7: estado real seguido de estado ficticio; Xs = Xe del estado ficticio siguiente = 0. ESTADO 7’: estado ficticio; Xs = su propia Xe = 0. El siguiente paso consiste en obtener las funciones lógicas simplificadas de las salidas del sistema según las tablas de Karnaugh.
Tabla de Karnaugh de la salida P
Tabla de Karnaugh de la salida Xs
En cuanto a las ecuaciones lógicas de ambas salidas: P = S1 + Fc1 ↔ Fc2
↔
Xs = Fc2 + Fc1
Xe
↔
Xe
Con lo que el esquema eléctrico que soluciona el problema es el siguiente:
58
RESUMEN Los autómatas industriales están diseñados para el control de instalaciones industriales, aunque en los últimos tiempos se han desarrollado versiones de menor capacidad y con funciones específicas adaptadas a las instalaciones domóticas y sus subsistemas. Los relés programables presentan numerosas ventajas: son sencillos de montar, de programar y de mantener. Son muy adecuados para usos externos a la actividad industrial. Las instalaciones automatizadas se construyen, mayoritariamente, con elementos que presentan únicamente dos estados estables en su funcionamiento: lámparas, motores, actuadores, etc. Esto permite traducir la relación entre los mismos a la lógica del álgebra de Boole, facilitando enormemente su especificación y diseño. A partir de las reglas y propiedades del álgebra de Boole se diseñarán con relativa facilidad los esquemas lógicos cableados y los programas para los relés programables que resolverán las necesidades de automatización que se puedan presentar. Además del sistema de numeración decimal existen dos sistemas de numeración de gran aplicación en el desarrollo de soluciones de automatización: el código binario natural y el código reflejado de Gray. El código reflejado de Gray tiene la propiedad de que al pasar de un número al siguiente solamente cambia un digito, lo que lo hace muy útil para aplicaciones de simplificación de funciones lógicas.
Llamamos función lógica a la relación que existe entre las diversas variables del sistema automático que nos definirá el funcionamiento de las salidas del mismo. Existen cuatro formas de expresión de las funciones lógicas que son muy útiles a la hora de realizar físicamente los automatismos en función de las tecnologías empleadas: esquemas lógicos cableados, tablas de verdad, diagrama lógico de bloques y ecuaciones lógicas. Las funciones lógicas básicas más útiles para la resolución de sistemas automatizados son las: NOT, OR, AND, NOR y NAND. Cualquier otra función lógica que se pueda expresar con los métodos antes mencionados la denominaremos FUNCIÓN LÓGICA GENERAL. Cualquier función lógica general tiene su expresión como tabla de verdad, esquema lógico cableado, diagrama lógico de bloques y ecuaciones lógicas. Para obtener una solución de automatización lo más reducida y económica posible es necesario simplificar las funciones lógicas a la hora de obtener ecuaciones lógicas, esquemas eléctricos cableados y diagramas de bloques. Uno de los sistemas más extendidos consiste en el de simplificación mediante tablas de Karnaugh, partiendo de la tabla de verdad de la evolución del sistema y agrupando unos en la tabla, con unas reglas determinadas. Al formar la tabla de Karnaugh, las combinaciones de variables tanto en las filas como en las columnas se irán colocando según el código reflejado de 59
Gray, para que las celdas de la tabla que se encuentren al lado en horizontal y vertical sean contiguas (sólo cambia una variable de una a otra), condición indispensable para poder formar grupos. La ecuación lógica que se obtenga de la tabla de Karnaugh tendrá un grado de simplificación considerable, aunque no es necesariamente el máximo. Conviene observar si es posible simplificar un poco más. Los sistemas combinacionales se caracterizan porque el valor de las salidas depende únicamente del valor de las entradas en ese momento. Al formar la tabla de Karnaugh de la salida en un sistema combinacional, cuando se han terminado de trasladar todos los ceros y unos de la tabla de verdad, pueden quedar celdas vacías, que se completarán con X, que representan que estas posiciones se pueden interpretar indistintamente como ceros o unos, como más convenga, para obtener los grupos de mayor tamaño y, consecuentemente, la mayor simplificación. Los sistemas secuenciales se caracterizan porque el valor de las salidas depende no sólo del valor de las entradas en ese momento sino también del valor de las salidas en estados anteriores. La unidad básica de memoria en los sistemas secuenciales es el biestable RS. En el esquema eléctrico cableado se emplea la realimentación a través de un contacto abierto del relé o contactor en cuestión. Los sistemas combinacionales también se pueden resolver mediante la representación de sus etapas de evolución en la tabla de verdad, y su posterior simplificación mediante las tablas de Karnaugh.
60
Si el sistema es secuencial se ha de añadir una variable interna que se representa como variable de entrada en la parte de las entradas y como variable de salida en la parte de las salidas de la tabla de verdad, para solucionar la indeterminación que presentará disponer de dos estados con la misma combinación de variables de entrada y distintas salidas. Posteriormente nos aparecerá otro problema al solucionar la indeterminación anterior: nos encontraremos con que de un estado al siguiente nos cambian dos variables de entrada a la vez. Lo solucionaremos intercalando un estado ficticio en el que cambiaremos únicamente la variable interna de entrada, dejando igual la otra variable que cambia (la real). Si el problema de automatización es relativamente sencillo: a partir de la definición “en abstracto” del mismo, traduciremos esta información a la evolución del sistema según sus etapas, con unas reglas definidas. Después lo plasmaremos en una tabla de verdad, de la que extraeremos tablas de Karnaugh, la ecuación lógica simplificada y, a partir de ésta, la solución del problema en esquema eléctrico cableado o en diagrama lógico de bloques. La programación del microcontrolador es entonces muy sencilla. Para la deducción de la tabla de verdad a partir de la evolución requerida del sistema se ha de tener en cuenta: 1. Se representará en primer lugar el estado inicial; 2. Un estado viene definido por una determinada combinación de variables de entrada, identificándose con una fila de la tabla de verdad, y 3. El paso de un estado al siguiente lo determina el cambio de una sola de las variables de entrada.
Ejercicios de autocomprobación Rodea con un círculo la V si cada una de las siguientes afirmaciones es verdadera, o la F si es falsa. 1. La lógica binaria define la forma de relacionarse entre sí de los elementos de automatización que sólo disponen de dos estados de funcionamiento.
V
F
2. Si un pulsador está accionado, su contacto dejará pasar la corriente y si no está accionado, no dejará pasar la corriente.
V
F
3. Una FUNCIÓN LÓGICA establece la relación entre las variables del sistema automático que definen el funcionamiento de las salidas del mismo.
V
F
4. Mediante las tablas de verdad se pueden expresar las funciones lógicas, y suponen una forma muy útil de representar la evolución de los estados de pequeños automatismos.
V
F
5. No es posible representar las funciones lógicas expresadas mediante ecuaciones lógicas como esquemas eléctricos cableados.
V
F
6. Las formas canónicas de expresar la ecuación algebraica a partir de las tablas de verdad (MINTERM y MAXTERM) nos proporcionan las ecuaciones más simplificadas que se pueden obtener para esa función lógica.
V
F
7. El método de simplificación de funciones lógicas mediante tabla de Karnaugh no proporciona las ecuaciones más simplificadas. Es posible que, algunas veces, se pueda simplificar algo más.
V
F
8. Las combinaciones de ceros y unos correspondientes a las posibles combinaciones de las variables de entrada que se colocan en filas y columnas en la tabla de Karnaugh, se deben ordenar según el código binario natural.
V
F
9. Al realizar los agrupamientos de unos en la tabla de Karnaugh, es posible formar grupos de seis unos.
V
F
10. El número de unos que puede contener un grupo en la tabla de Karnaugh debe ser potencia de dos.
V
F
11. Es muy sencillo realizar simplificaciones de funciones lógicas de más de 5 variables mediante las tablas de Karnaugh.
V
F
12. Al fijarnos en las variables de entrada correspondientes a los unos contenidos en un grupo de la tabla de Karnaugh, si alguna variable cambia de un uno a otro del grupo, ésta no aparecerá en el término correspondiente de la ecuación algebraica.
V
F
13. No es posible realizar agrupaciones de unos que tengan forma de L.
V
F
14. Es posible expresar una función lógica en diagrama lógico de bloques a partir del esquema eléctrico cableado de una forma sencilla.
V
F
61
15. Los sistemas combinacionales se caracterizan porque las variables de salida dependen de una combinación de las variables de entrada con las propias variables de salida.
V
F
16. No es posible resolver los problemas sencillos de automatización secuenciales mediante las tablas de verdad con su posterior simplificación por tablas de Karnaugh.
V
F
17. La célula básica de memoria es un sistema puramente combinacional.
V
F
18. Al pasar los datos de la tabla de verdad de un sistema real a la tabla de Karnaugh, las posiciones que me queden libres en esta última no se podrán incluir en los grupos que realice.
V
F
19. Si me encuentro con que al representar un sistema a automatizar en su tabla de verdad se me presentan dos estados con la misma combinación de variables de entrada y distintas variables de salida, deberé incluir una variable adicional interna.
V
F
20. Crearé un estado ficticio siempre que quiera resolver el problema de que al pasar de un estado al siguiente en la tabla de verdad me cambien simultáneamente más de una variable de entrada.
V
F
Compara tus respuestas con las que te indicamos al final de la unidad. Si has cometido errores, repasa la parte correspondiente del tema antes de proseguir tu estudio.
62
PROGRAMACIÓN CON GRAFCET. EJERCICIOS RESUELTOS
PROGRAMACIÓN CON GRAFCET. EJERCICIOS RESUELTOS Como has podido aprender en los ejemplos de los apartados anteriores, si el sistema automático dispone de un número elevado de variables de entrada, su resolución mediante el método de las tablas de verdad y simplificación mediante tablas de Karnaugh se complica excesivamente. Con el aumento de la potencia de los sistemas de cálculo electrónico, aparecen los MICROCONTROLADORES y los AUTÓMATAS PROGRAMABLES, en los que se puede programar la lógica que solucione el problema de automatización mediante software. Consecuentemente, ya no es crítico que la solución del problema sea lo más simplificada posible, puesto que no se va a realizar en lógica cableada, con contactores y relés. Esto nos permite explorar otros procedimientos más estructurados y sencillos para solucionar los automatismos complejos, evitando las grandes dificultades a las que se hace referencia en el párrafo anterior. El más extendido de ellos es el GRAFCET, término que es abreviación de Gráfico Funcional de Control de Etapas y Transiciones. Como se ha comentado, la potencia del GRAFCET reside en que, aunque no busca las soluciones más simplificadas, sí proporciona un método de resolución de los automatismos que es estándar, riguroso y jerárquico, lo que evita las incoherencias, bloqueos o conflictos durante el funcionamiento del sistema automático. El GRAFCET es un modelo con el que se analiza y diseña mediante una representación gráfica el funcionamiento de un sistema automático. Se exponen a continuación los elementos básicos que componen este modelo. ETAPAS. Representan cada uno de los estados del sistema. Se corresponde cada una con una situación del sistema en la que las salidas dependen únicamente de las entradas; es decir, la relación que existe entre entradas y salidas dentro de una etapa es principalmente combinacional (aunque se pueden dar también funciones no combinacionales, como temporizaciones, conteos, etc.). La etapa se representa por un cuadrado con un número o un símbolo en su interior. Una ETAPA INICIAL es la etapa en que se debe posicionar el sistema en el primer estado de funcionamiento del mismo. Se representa por un cuadrado doble. LÍNEAS DE EVOLUCIÓN. Unen las etapas consecutivas entre sí. Señalan una dirección del flujo de control que va siempre de arriba hacia abajo, a no ser que se indique lo contrario. TRANSICIONES. Son las condiciones lógicas que tiene que cumplir el sistema para que termine la actividad definida en una 63
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
etapa y comience la actividad de la etapa o de las etapas que la sigan. Vienen representadas en el gráfico como líneas cortas que se cruzan con las líneas de evolución entre las etapas. REENVÍOS. Flechas que marcan el destino o la procedencia de las líneas de evolución cuando un gráfico está dividido en partes o se pretende evitar un número excesivo de cruces entre líneas de evolución. El aspecto general de un diagrama GRAFCET es el siguiente:
Que se combinarán en la solución del problema siguiendo las reglas que se exponen a continuación: Entre dos etapas consecutivas del gráfico de GRAFCET, debe existir solamente una condición de transición (una ecuación combinacional que puede ser todo lo compleja que sea necesario, pero solo una). Los números de las etapas tienen una función identificativa únicamente, no necesariamente se han de suceder las etapas en el flujo de control según el orden de sus números. Se dice que una transición es VÁLIDA cuando la etapa anterior a la misma está activa (es decir, en cualquier momento se puede cumplir la condición de transición). Si la transición es VÁLIDA y la condición lógica de la transición (su RECEPTIVIDAD) se cumple, entonces la transición es FRANQUEABLE. Cuando se franquea una transición se desactivarán las etapas anteriores y se activarán las posteriores a la misma. La etapa inicial (en cuadro doble) se activará en la puesta en marcha. 64
PROGRAMACIÓN CON GRAFCET. EJERCICIOS RESUELTOS
Primer nivel: GRAFCET funcional El proceso a resolver se presentará como una sucesión de etapas en las que se describirán las acciones a realizar y las condiciones de transición. Corresponde a una descripción global del sistema (con poco nivel de detalle). Veámoslo con un ejemplo:
Ejercicio resuelto. ACCIONAMIENTO AUTOMÁTICO DE PUERTA CON DETECTOR DE PRESENCIA Recordemos el funcionamiento de la puerta automática que se comentó en apartados anteriores: tenemos una puerta automática accionada por un motor eléctrico (a diferencia del ejemplo anterior), y queremos comandar la apertura de la misma en base a un detector de presencia próximo a la puerta con parada por final de carrera. Cada vez que se aproxime una persona a la puerta, el motor debe abrir la misma y cuando la persona ya haya pasado, el sistema debe volver a cerrarla, quedando en espera de un nuevo ciclo. El esquema sería:
SOLUCIÓN: El GRAFCET DE NIVEL 1 quedaría como se muestra al margen. En este nivel de GRAFCET no se hacen referencias a las técnicas que se emplearán para la realización física del automatismo (tipos de detectores, de actuadores, de realización de las funciones lógicas, etc.), consiste en un nivel puramente conceptual.
65
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Segundo nivel: descripción tecnológica y operativa (GRAFCET con sensores y accionamientos) Se adapta el diagrama del GRAFCET a la tecnología con la que vayamos a realizar físicamente el sistema automático, describiendo las acciones dentro de la etapa y las receptividades correspondientes a las transiciones (las condiciones para el franqueo de la transición), conforme a la tecnología escogida. El GRAFCET DE SEGUNDO NIVEL del ejemplo quedaría como se muestra en la figura al margen. En donde “S –” representa la orden de marcha a la derecha del motor (sentido de cerrar puerta), “S = 0” representa la ausencia de orden de marcha al motor (situación de espera), y “S +” representa la orden de marcha a la izquierda del motor (sentido de abrir puerta).
Tercer nivel: diseño del sistema de control Realizaremos la “traducción” del gráfico de control GRAFCET obtenido en el segundo nivel al lenguaje de programación o a la tecnología de automatización concretos que vayamos a utilizar en nuestro sistema. El diseño del sistema automático se realizará en dos partes bien diferenciadas: PARTE SECUENCIAL, en la que se realizarán en el lenguaje lógico escogido las estructuras de etapas y condiciones de transición que dan paso de unas etapas a otras. PARTE COMBINACIONAL, en la que se realizarán en el lenguaje lógico escogido todas las acciones combinacionales que se ejecutarán dentro de la etapa que se encuentre activa. Con anterioridad al diseño de las partes secuencial y combinacional, y dado que vamos a realizar el desarrollo de esta parte de la instalación automatizada aplicado a la programación de microcontroladores, realizaremos una TABLA DE ASIGNACIÓN DE VARIABLES. 66
PROGRAMACIÓN CON GRAFCET. EJERCICIOS RESUELTOS
Con esta tabla identificaremos las variables que vamos a necesitar en la programación del microcontrolador, tanto variables de entrada, como variables de salida, como variables internas. La tabla de asignación de variables que corresponde al ejemplo, aplicada al caso del microcontrolador Logo de Siemens, cuyas principales características se estudiarán posteriormente, queda como sigue: TABLA DE ASIGNACIÓN DE VARIABLES VARIABLES DE ENTRADA GRAFCET
Microcontrolador
Comentario
a
I1
Detector de presencia
b
I2
Final de carrera de puerta abierta
c
I3
Final de carrera de puerta cerrada VARIABLES DE SALIDA
GRAFCET
Microcontrolador
Comentario
S-
Q1
Mando del contactor para cierre de la puerta
S+
Q2
Mando del contactor para apertura de la puerta BIESTABLES
GRAFCET
Microcontrolador
Comentario
E0
M1
Etapa 0 activa con M1 = 1
E1
M2
Etapa 1 activa con M2 = 1
E2
M3
Etapa 2 activa con M3 = 1
E3
M4
Etapa 3 activa con M4 = 1
E4
M5
Etapa 4 activa con M5 = 1
Se describen a continuación los pasos que hay que seguir para realizar el diseño de cada una de las partes dentro del tercer nivel.
a) PARTE SECUENCIAL Asignaremos un biestable a cada etapa, que marcará si la misma está activada o no; sus valores lógicos 1 (etapa activada) o 0 (etapa no activa), se van a establecer en función de las receptividades de las transiciones entre etapas (de las condiciones de franqueo de una etapa a otra) como sigue: Puesta a 1 del biestable de la etapa N (la etapa N pasará a estar activa): para poner a 1 el biestable de activación de la etapa N tendrá que suceder que la etapa anterior (o etapas anteriores si más de una etapa anterior converge en la etapa N), esté activada y simultáneamente se cumplan las condiciones de transición entre la(s) etapa(s) anterior(es) y la etapa N. 67
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Puesta a 0 del biestable de la etapa N (la etapa N pasará a estar no activa): para poner a 0 el biestable de activación de la etapa N tendrá que suceder que la etapa posterior se active (o lo hagan simultáneamente las etapas inmediatamente posteriores si hay varias que divergen de la etapa N). En los biestables tienen prioridad las órdenes de Reset (puesta a cero), frente a las de Set (puesta a uno), lo cual es importante para la ejecución de nuestro GRAFCET, GRAFCET, dado que en e n muchas ocasiones nos encontraremos con que un mismo biestable recibe las dos órdenes simultáneamente. Dado que la activación de la etapa siguiente requiere la desactivación de la etapa anterior, anterior, la prioridad del Reset sobre el Set nos ayuda a conseguirlo.
b) PARTE COMBINACIONAL (ACCIONES DE LAS ETAPAS) A continuación se diseñarán las funciones lógicas de las acciones que se deben desarrollar dentro de cada etapa, para realizarlas con la tecnología elegida (cableada, microcontrolador, etc.). Los procedimientos que se emplearán son los que se han estudiado a lo largo de la presente unidad de conceptos básicos de programación aplicados a la lógica combinacional. En el caso del ejemplo, el diseño de las partes secuencial y combinacional del GRAFCET quedaría como sigue:
CONDICIONES INICIALES La etapa inicial del GRAFCET se activará incondicionalmente. Se corresponde generalmente con una situación de reposo en espera de una orden de marcha o con la comprobación compro bación del posicionamiento inicial del sistema antes de comenzar el ciclo. Puedes observar en la figura siguiente cómo se resuelve la parte combinacional del problema con la programación según el lenguaje de diagrama lógico de bloques del microautómata Logo de Siemens.
PARTE SECUENCIAL Cada etapa viene representada por un biestable propio, cuyo bloque viene marcado con la denominación RS. Recuerda que ya has estudiado los biestables en la unidad didáctica 4, correspondiente a electrónica, en donde se expone que los biestables son la célula básica de memoria. Los microcontroladores disponen de un bloque funcional llamado biestable RS que realiza, precisamente, esta función y que verás más adelante cómo se realiza su asociación a las etapas del GRAFCET, para indicar su activación o desactivación. Las entradas vienen representadas por los bloques marcados como “I”, que corresponden a entradas digitales en bornes del microautómata. 68
PROGRAMACIÓN CON GRAFCET. EJERCICIOS RESUELTOS
Las marcas que se han empleado (los bloques marcados con la denominación “M” tras los biestables) corresponden a variables internas del microautómata, utilizadas para evitar las referencias cruzadas directas entre salidas (recursiones), situación no permitida en este lenguaje de programación (particularidad del Logo de Siemens). 69
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
A la entrada de SET de cada biestable llegan las condiciones de transición (las receptividades) de cada etapa. Observa que la salida de un biestable se dirige siempre a la entrada de RESET del biestable anterior, con lo que se consigue que la activación de la etapa siguiente implique la desactivación de la etapa anterior.
PARTE COMBINACIONAL ACCIONES DE LA ETAPA 1 Esta etapa no lleva asociadas acciones combinacionales, ya que se trata de una etapa de espera.
70
PROGRAMACIÓN CON GRAFCET. EJERCICIOS RESUELTOS
ACCIONES DE LA ETAPA 2 Cuando la segunda etapa se encuentre activa, se dará orden de apertura a la puerta, hasta que se encuentre totalmente abierta. La salida se marca con un bloque denominado “Q”, que corresponde con salidas digitales en bornas del microautómata.
ACCIONES DE LA ETAPA 3 Esta etapa no lleva asociadas acciones combinacionales, ya que se trata de una etapa de espera.
ACCIONES DE LA ETAPA 4 Cuando se encuentra activa la etapa cuatro, se dará orden de cierre a la puerta. Esta segunda salida digital del autómata, Q2, con salida a bornas del mismo, alimentará a la bobina del contactor de marcha del motor de la puerta en sentido del cierre de la misma.
Comprobación del funcionamiento del programa realizado con GRAFCET En el disco que se entrega con el curso puedes encontrar el programa correspondiente a este ejemplo con el nombre “EJEMPLO 1 GRAFCET PUERTA CON DETECTOR PRESENCIA.lsc”, que puedes ejecutar con el programa LOGOSOFT. Los pasos para la comprobación del funcionamiento del programa son los siguientes, una vez hayas ejecutado el LOGOSOFT y hayas cargado el programa:
1. En el menú del programa pulsa en “Herramientas” y “Simulación” o, alternativamente, pulsa F3. Observarás cómo se activa el biestable B001 E0, correspondiente a la etapa 0. Como la etapa cero es de activación automática, a la entrada Reset de su biestable le hemos conectado la marca M8, que es la única que tiene la propiedad de que en el primer ciclo del programa (justo cuando empieza a correr por primera vez tras el último paro de programa), da en su salida un valor activo (igual a 1 lógico), y en el segundo ciclo y posteriores funciona como una marca normal. Consecuentemente, nos encontramos con la etapa 0 activa. 2. Si pulsamos sobre I3 (detector de puerta cerrada), estaremos satisfaciendo la receptividad de la transición de la etapa 0 a la 1, con lo que puedes observar que se activa la etapa 1 (el biestable RS B002) y se desactiva la etapa 0 (el biestable RS B001). Esta etapa no dispone de acciones combinacionales asociadas, dado que es una etapa de espera. 3. Con I3 pulsado (la puerta continúa en posición cerrada), pulsa sobre I1 para simular la presencia de una persona en las inmediaciones de la puerta. Verás cómo se activa la etapa E2 (el biestable RS B004). Además, en la parte combinacional del programa verás cómo la activación de la marca M2 activa a su vez la salida Q1, que corresponde al contactor de apertura de la puerta. La puerta comienza a abrir y, por tanto, volveremos 71
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
a pulsar sobre I3 porque ésta deja de pisar el final de carrera de puerta cerrada. Observa cómo se mantiene tanto la etapa 2 activa como la salida Q1 en marcha. 4. El siguiente paso corresponde al final de carrera de puerta abierta cuando ésta llega a su posición de completamente abierta. Pulsamos sobre I2 para simular esta situación. Puedes observar cómo se activa la etapa E3 (biestable RS B006), a la vez que se desactiva la salida Q1 en la parte de las acciones de las etapas del programa. Nos encontramos en una etapa de espera (la persona debe pasar por la puerta sin que el sistema realice más acciones). 5. El siguiente paso corresponde al detector de presencia, que cambiará a no detectar cuando la persona ya haya pasado. Para simular esta situación pulsamos otra vez sobre I1 para desactivarlo, dejando I2 pulsado, ya que la puerta sigue pisando el final de carrera de abierta. Observa cómo el sistema ha pasado de la etapa E3 a la E4 (se ha activado el biestable RS B008 y se ha desactivado el biestable RS B006), a la vez que en la parte de las acciones de la etapa 4 se ha activado la salida Q2, correspondiente al contactor que corresponde al sentido de giro de cerrar la puerta del motor. La puerta comenzará a cerrar; si pulsas de nuevo sobre I2, simulas que ya no pisa el final de carrera de puerta abierta (observa que el sistema permanece en la etapa 4 dado que debe continuar cerrando). 6. Cuando la puerta llega a su posición final de cerrada, pulsará sobre el final de carrera de puerta cerrada (pulsa sobre I3 para simular esta situación), y observa que pasamos al estado E0, desactivándose el estado E4, con lo que volvemos a iniciar el ciclo. Como puedes observar, en los casos sencillos la utilización del método GRAFCET supone que la función lógica que obtenemos finalmente se complica con respecto a la solución obtenida mediante tablas de verdad y simplificación por Karnaugh. El objetivo del GRAFCET no es conseguir un alto grado de simplificación, sino servir de herramienta muy potente para la solución de los problemas más complejos, como se verá en los siguientes ejemplos. A continuación se expone otro ejemplo resuelto con el sistema GRAFCET, pero esta vez programado con el lenguaje correspondiente al microcontrolador Zelio de Telemecánica.
Ejercicio resuelto. ACTUACIÓN EN CICLO CONTINUO DE UN SEMÁFORO Se quiere diseñar un programa que comande los encendidos de las luces de un semáforo. La puesta en marcha del semáforo se debe producir inmediatamente al dar tensión. La secuencia de luces debe ser la siguiente: Luz roja durante 15 segundos. Luz verde durante 10 segundos. Luz ámbar durante 5 segundos. 72
PROGRAMACIÓN CON GRAFCET. EJERCICIOS RESUELTOS
SOLUCIÓN: El GRAFCET DE NIVEL 1 necesario para resolver este problema quedaría:
El GRAFCET DE NIVEL 2 quedaría:
Recuerda que S1, S2, S3, según la nomenclatura que se ha empleado a lo largo de la unidad, hacen referencia a las tres salidas del sistema de automa73
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
tización (que corresponderán en este caso a tres salidas físicas del microautómata con las que alimentaremos las lámparas del semáforo). La TABLA DE ASIGNACIÓN DE VARIABLES para este caso, con la que realizaremos la programación en el microautómata Zelio de Schneider, quedará:
TABLA DE ASIGNACIÓN DE VARIABLES VARIABLES DE ENTRADA GRAFCET
Microcontrolador
Comentario
Sin variables de entrada: queremos activación automática al conectar la alimentación y ciclo continuo. VARIABLES DE SALIDA GRAFCET
Microcontrolador
Comentario
S1
Q1
Alimentación de la lámpara roja
S2
Q2
Alimentación de la lámpara verde
S3
Q2
Alimentación de la lámpara ámbar BIESTABLES
GRAFCET
Microcontrolador
Comentario
E0
M1
Etapa 0 activa con M1 = 1
E1
M2
Etapa 1 activa con M2 = 1
E2
M3
Etapa 2 activa con M3 = 1
E3
M4
Etapa 3 activa con M4 = 1
Comprobación del funcionamiento del programa realizado con GRAFCET Como puedes comprobar al cargar el programa GRAFCET SEMÁFORO 1 que viene en el CD del curso, al iniciar la simulación en Zelio Logic se activa la etapa 0, al no estar activas las otras tres etapas. La activación de la etapa cero conduce automáticamente a la activación de la primera etapa (en este ejemplo no tenemos posiciones iniciales que comprobar en la etapa cero). La entrada en la etapa 1 supone la iniciación automática del temporizador T1, que cuenta hasta los 15 segundos. Cuando se alcanzan los 15 segundos, el temporizador se activa y se inicia la etapa 2, a la vez que se desactiva la etapa 1. De esta forma se van sucediendo las tres etapas correspondientes a los tres estados del semáforo. Las acciones combinacionales correspondientes a cada etapa se han programado junto con las secuenciales, dado que consisten solamente en la activación directa de la salida correspondiente a la lámpara de cada etapa. Se puede observar la programación en el lenguaje de contactos de Zelio Logic en la figura siguiente. 74
PROGRAMACIÓN CON GRAFCET. EJERCICIOS RESUELTOS
75
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Ejercicio resuelto. EXTRACCIÓN DE AGUAS DE UN POZO DE RECOGIDA CON DOS BOMBAS Y ALARMA CON MARCHA ALTERNADA ENTRE LAS DOS BOMBAS Se pide realizar con la metodología GRAFCET la automatización de la extracción de aguas del depósito de recogida que se realizó en un ejercicio anterior, que consistía en:
Recordemos las condiciones de funcionamiento: Si el nivel de agua se encuentra por debajo del detector n1, las bombas estarán paradas. Si el nivel de agua alcanza al detector n1, arrancará la bomba B1. Si el nivel de agua alcanza al detector n2, una sola bomba no tiene la fuerza suficiente para evacuar el caudal de agua entrante y arrancaremos también la bomba B2. Si el nivel de agua alcanza al detector n3, o bien el caudal de agua es excesivamente grande o hay algún fallo en el sistema, por lo que se encenderá un piloto rojo de alarma H1. A las que añadimos la siguiente condición adicional: El sistema debe recordar cuál fue la última bomba que arrancó, de forma que en el siguiente arranque la bomba que se ponga en marcha sea la otra. Esta medida tiene el objeto de repartir la carga de trabajo entre las dos bombas y que no sea siempre la misma la que arranque cuando se toque la boya de nivel inferior (circunstancia de funcionamiento que se llevará normalmente la mayor parte del tiempo de bombeo del sistema). 76
PROGRAMACIÓN CON GRAFCET. EJERCICIOS RESUELTOS
SOLUCIÓN: El GRAFCET DE NIVEL 1 necesario para resolver este problema quedaría:
El GRAFCET DE NIVEL 2 quedaría:
77
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
La TABLA DE ASIGNACIÓN DE VARIABLES para este caso, con la que realizaremos la programación en el microautómata Zelio de Schneider, quedará:
TABLA DE ASIGNACIÓN DE VARIABLES VARIABLES DE ENTRADA GRAFCET
Microcontrolador
Comentario
n1
I1
Detector de presencia
n2
I2
Final de carrera de puerta abierta
n3
I3
Final de carrera de puerta cerrada VARIABLES DE SALIDA
GRAFCET
Microcontrolador
Comentario
B1
Q1
Bomba número 1
B2
Q2
Bomba número 2
H
Q3
Alarma de nivel máximo BIESTABLES
GRAFCET
Microcontrolador
Comentario
E0
M1
Etapa 0 activa con M1 = 1
E1
M2
Etapa 1 activa con M2 = 1
E2
M3
Etapa 2 activa con M3 = 1
E3
M4
Etapa 3 activa con M4 = 1
E4
M5
Etapa 4 activa con M5 = 1
-
M6
Memoria para selección de bomba a arrancar
En este ejercicio empleamos un biestable más aparte de los correspondientes a las etapas del GRAFCET. Este biestable adicional (M6) se emplea para recordar cuál fue la última bomba en arrancar y preseleccionar para el próximo arranque la otra bomba: Si M6 = 0, la última bomba que arrancó fue B2 y, por lo tanto, la próxima que arrancará será la bomba B1. Si M6 = 1, la última bomba que arrancó fue B1 y, por lo tanto, la próxima que arrancará será la bomba B2. Las dos figuras siguientes son, respectivamente, la programación en lenguaje de contactos en Zelio Logic de la parte secuencial del GRAFCET del problema (traducción al programa de la estructura de etapas) y la programación de la parte de las acciones de las etapas. 78
PROGRAMACIÓN CON GRAFCET. EJERCICIOS RESUELTOS
79
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
80
RESUMEN Conforme se va complicando el problema de automatización, el método de resolución por tablas de verdad, tablas de Karnaugh y ecuación lógica simplificada se hace demasiado complejo y deja de ser una solución viable. Para resolver estos problemas más complejos se emplean los métodos gráficos. Entre ellos, el más extendido es el método GRAFCET. GRAFCET es acrónimo de Gráfico Funcional de Control de Etapas y Transiciones. El GRAFCET no persigue conseguir la solución más simplificada posible del problema de automatización, sino proporcionar un método sistemático de resolución de problemas de automatización por complejos que sean. Los elementos básicos del GRAFCET consisten en etapas, líneas de evolución, transiciones y reenvíos. Las etapas representan los estados del sistema. Dentro de una etapa las acciones son principalmente combinacionales. Se representan con un cuadrado con un número o símbolo en su interior. La etapa inicial se emplea para posicionar el sistema en el primer estado de funcionamiento. Se representa por un cuadrado doble. Las líneas de evolución unen las etapas consecutivas entre sí. Las transiciones son los requisitos que debe cumplir el sistema para que termine la actividad definida en una etapa y
comience la actividad de la etapa o de las etapas que le siguen. Se representan con líneas cortas que cruzan a las líneas de evolución. Los reenvíos son flechas que marcan el destino o la procedencia de las líneas de evolución, para evitar líneas de evolución demasiado prolongadas o demasiados cruces entre las mismas. Se denomina RECEPTIVIDAD a la condición lógica de la transición, que, si se cumple, la transición es franqueable. Cuando se franquea una transición siempre se desactivarán las etapas anteriores y se activarán las etapas posteriores a la misma. La etapa inicial se debe activar siempre automáticamente en la puesta en marcha. La resolución del problema mediante el método GRAFCET se lleva a cabo en tres niveles: el primer nivel, o nivel funcional; el segundo nivel, o descripción tecnológica y operativa, y el tercer nivel o diseño del sistema de control. El tercer nivel dará como resultado un programa para un microcontrolador, por lo que tendremos que establecer en él una tabla de asignación de variables y dos partes diferenciadas en el programa a cargar en el microcontrolador: la parte secuencial, o estructura lógica de etapas y transiciones, y la parte de las acciones a realizar por las etapas. Una vez realizado el procedimiento GRAFCET, se podrá escribir el programa para cargarlo en cualquier microcontrolador y resolver los requisitos de la automatización. 81
En conclusión: si el problema de automatización es complejo y no es solucionable con el método de evolución de etapas en la tabla de verdad y Karnaugh, entonces realizaremos los gráficos de funcionamiento según el método GRAFCET, estableceremos sistemáticamente los pasos en la evolución del sistema por etapas y
82
transiciones, y en último lugar definiremos las acciones asociadas a las etapas. La programación del microcontrolador en base a este gráfico de funcionamiento es entonces muy sencilla, aunque no sea lo más simplificada posible, aspecto secundario si se dispone de microcontroladores.
Ejercicios de autocomprobación Rodea con un círculo la V si cada una de las siguientes afirmaciones es verdadera, o la F si es falsa. 21. El método GRAFCET para resolver problemas de automatización no es válido para los sistemas secuenciales.
V
F
22. El método GRAFCET es un método gráfico de solución de problemas de automatización.
V
F
23. El método GRAFCET es especialmente útil para obtener soluciones a los problemas de automatización que sean lo más reducidas posibles y que, al realizarlas físicamente en lógica cableada, nos den la mayor economía posible.
V
F
24. El método GRAFCET es válido y muy aplicable para obtener de forma sistemática las soluciones de problemas muy complejos y para los que la solución más simplificada no es lo más importante, dado que se van a programar en microcontrolador.
V
F
25. Si se cumple la receptividad de una transición (su condición lógica), y la etapa anterior a la transición estaba activa, entonces se activará la etapa posterior y se desactivará la etapa anterior.
V
F
26. Es necesario accionar un pulsador al comienzo de la operación del sistema para activar la etapa inicial del GRAFCET.
V
F
27. El GRAFCET de primer nivel, también denominado GRAFCET FUNCIONAL, corresponde a una descripción global del sistema con poco nivel de detalle.
V
F
28. En el GRAFCET de segundo nivel, también llamado TABLA DE ASIGNACIÓN DE VARIABLES, se realizará una lista de las variables de entrada y salida, asociándolas con las variables del microcontrolador y realizando un pequeño comentario de cada una de las mismas.
V
F
29. La activación de una etapa en GRAFCET viene determinada por la activación de un bloque funcional en el microcontrolador de tipo temporizador.
V
F
30. Al realizar la programación de la solución obtenida con el método GRAFCET en el microcontrolador, existirán dos partes diferenciadas: la correspondiente a la estructura de etapas de la solución (parte secuencial), y la correspondiente a las acciones a realizar por las etapas (parte combinacional).
V
F
Compara tus respuestas con las que te indicamos al final de la unidad. Si has cometido errores, repasa la parte correspondiente del tema antes de proseguir tu estudio.
83
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
RELÉ PROGRAMABLE ZELIO DE SCHNEIDER ELECTRIC Y LOGO DE SIEMENS Relé programable Zelio de Schneider Electric Características principales Schneider Electric dispone de un pequeño microcontrolador (también denominados relés programables), denominado Zelio, que está diseñado para el control de pequeños sistemas automatizados. Se viene comercializando desde el año 2000. Su empleo está bastante extendido tanto en el sector industrial como en el sector servicios (siendo este último el objeto principal de estudio del presente curso). Dentro del área de servicios-domótica son aplicaciones típicas las que se relacionan a continuación: Automatización de barreras, cortinas eléctricas, controles de acceso, etcétera. Automatización de sistemas de riego, bombeo, invernaderos, etcétera. Automatización de instalaciones de iluminación. Automatización de compresores y sistemas de aire acondicionado. Por su compacto tamaño y por su facilidad de instalación y configuración, supone una gran alternativa a los sistemas de lógica eléctrica cableada (que se han venido estudiado en la presente unidad), u otro tipo de soluciones basadas en tarjetas de control específicas para la aplicación (cuyo gran inconveniente consiste en su falta de flexibilidad y estandarización). Las funciones básicas del relé programable Zelio consisten en: Actualizar la fecha y la hora del reloj interno. Introducir el esquema de mando. Borrar el esquema contenido en el relé programable. Visualizar y modificar los parámetros de los bloques de función. Cambiar el estado del autómata entre “run” y “stop”. Configurar las opciones básicas (uso de contraseña para la protección de la información, elección del idioma, filtrado de las entradas para aumentar la sensibilidad, activación o desactivación de los botones Zx como pulsadores, y activación y desactivación de la ayuda automática). Transferir los programas de forma bidireccional. 84
RELÉ PROGRAMABLE ZELIO DE SCHNEIDER ELECTRIC Y LOGO DE SIEMENS
Visualizar los elementos necesarios para la introducción de un esquema de mando. En el frontal del relé se encuentran 6 teclas de función, de uso intuitivo, que permiten la gestión de menús, la entrada de valores, la edición de los esquemas de contactos necesarios para la programación y el empleo como simulación de pulsadores en los esquemas de mando. Se dispone de una interfaz que permite la transferencia de programas de forma bidireccional entre el relé programable y un ordenador provisto de la utilidad ZelioSoft.
Lenguajes de programación Dispone de una programación sencilla, que se puede realizar mediante los dos lenguajes siguientes: Lenguaje LADDER, que consiste en un esquema muy similar al esquema de lógica eléctrica cableada (de hecho, este tipo de lenguaje en microcontroladores surgió históricamente para facilitar a los usuarios, acostumbrados a manejarse con la lógica cableada, el manejo de estos productos emergentes y, por tanto, novedosos). Lenguaje FBD (Function Block Diagram; es decir, Diagrama de Bloques Funcionales). Ambos lenguajes de programación (además del diagrama eléctrico cableado), se han estudiado detalladamente en la presente unidad, por lo que no cabe duda de que su comprensión por parte del alumno será muy rápida y natural. La programación del microcontrolador se puede realizar por dos medios: Independientemente, empleando las teclas en el relé programable en lenguaje de contactos (LADDER), o En el ordenador, empleando el software ZelioSoft. Si escogemos esta última opción, la programación se puede realizar en LADDER o en FBD (diagrama de bloques de funciones). Cada línea de programa se compone de cinco posiciones para contactos como máximo, y de una última posición para la bobina (obligatoria). En caso de que sean necesarios más contactos, se pueden emplear relés auxiliares para memorizar el estado. En el lenguaje LADDER del microautómata Zelio se pueden emplear como contactos los elementos siguientes: Entradas digitales (todo/nada), TON. Salidas digitales (todo/nada), TON. Las teclas del frontal del relé programables empleadas como pulsadores digitales. 85
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Relés auxiliares. Bloques funcionales. Asimismo, en el lenguaje LADDER del microautómata Zelio se pueden emplear como salidas TON: Bobinas. Bobinas set-reset . Bobinas de telerruptor. La programación del relé Zelio permite el empleo de los siguientes bloques de función: Reloj. Contador. Temporizador. Bloque función analógico. Relé auxiliar.
Conexionado del relé programable Zelio Un relé programable Zelio genérico presenta en su frontal los siguientes elementos (versión alimentada a 24 V de corriente continua): Siendo cada uno de ellos: 2
3
4
5
1
6
7 8
10
9
86
1
1. Pestañas de fijación retráctiles. 2. Bloque terminal de alimentación. 3. Pantalla LCD de 4 líneas y 18 caracteres por línea. 4. Bloque terminal de entradas digitales. 5. Bloque terminal de entradas analógicas de 0 a 10 voltios, utilizables en entradas digitales según el modelo. 6. Alojamiento de la memoria de copia de seguridad o cable de conexión para PC. 7. Tecla Mayús (blanca). 8. Tecla Menú/Aceptar (verde), de selección y validación. 9. Bloque terminal de salida para relé. 10. Teclas de navegación (grises), configurables como botones pulsadores Z.
RELÉ PROGRAMABLE ZELIO DE SCHNEIDER ELECTRIC Y LOGO DE SIEMENS
El esquema con el que conectaríamos un relé programable Zelio alimentado a 220 V de corriente alterna y con entradas y salidas digitales, preparado para realizar el encendido de una lámpara desde dos sitios distintos, es el que se representa en la figura al margen.
L
Fusible 1
100 ... 240 Vca 50 / 60 Hz N
S1
S2
En donde se puede observar la distribución de la fase y el neutro de la alimentación monofásica a los diferentes bloques del relé programable:
1. La fase se lleva a la entrada de alimentación al relé (borne L), cable negro o marrón. 2. La fase se alimenta, también, a través de los pulsadores S1 y S2 al bloque de entradas digitales del relé, en las entradas I1 e I2 (bornes eléctricos del mismo nombre), cable negro o marrón. Observa cómo en los ejemplos desarrollados a lo largo de la unidad la nomenclatura que hemos utilizado es coherente con la que nos aparece ahora en el elemento real de programación.
Fusible 2
Salidas Q1 ... Q4: Relay 8A
L1
3. La fase se alimenta también al bloque de salidas, en concreto mediante la salida Q1 (borne 1), que cuando se cierre por programa comunicará la tensión a la lámpara L1 (por el borne 2 de Q1). 4. El neutro se distribuye al neutro de la alimentación al relé (borne N), cable azul. El relé programable Zelio que lleve marcada una alimentación 100/240 Vca, se deberá alimentar desde una línea de corriente alterna con una tensión de entre 85 y 264 V. La línea debe ser capaz de suministrar una intensidad nominal máxima a la entrada del relé de 46 mA con una tensión de 115 V y de 36 mA en caso de que la tensión sea de 240 V. Las entradas digitales del autómata trabajan con una intensidad de corriente nominal de 11 mA y una tensión nominal de entre 100 y 240 Vca. El rango de variación de la tensión que se lleve a los bornes de salida del autómata depende de si es continua o alterna: En corriente alterna las salidas del autómata se pueden conectar a una tensión de entre 24 y 250 V. Con una tensión en la salida de 230 Vca, la intensidad de corriente puede variar entre 0,9 y 15 A. El borne 1 de la salida se conectará a la línea de alimentación. El borne 2 se conectará a la entrada de la bobina del contactor comandado (borne A1 del contactor). 87
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
En corriente continua las salidas del autómata se pueden conectar a una tensión de entre 5 y 150 V. Con una tensión en la salida de 24 Vcc, la intensidad de corriente puede variar entre 0,9 y 13 A. El borne 1 de la salida se conectará al positivo de la alimentación. El borne 2 se conectará a la entrada de la bobina del contactor comandado (borne A1 del contactor).
Ejercicios resueltos Vamos a realizar como ejercicios de aplicación la programación en el lenguaje del microcontrolador Zelio Logic de algunos de los circuitos de ejemplo que se han expuesto a lo largo de la presente unidad didáctica.
Ejercicio resuelto. REALIZACIÓN DE LAS FUNCIONES LÓGICAS BÁSICAS EN ZELIO Realizar en el lenguaje LADDER de Zelio Logic la programación de las funciones lógicas básicas de la página 89.
SOLUCIÓN: FUNCIÓN “NOT” MEDIANTE RELÉ INTERMEDIO Expresiones lógicas de la función:
Tabla de verdad
Diagrama eléctrico cableado
Ecuación lógica
S=a
88
Diagrama lógico de bloques
RELÉ PROGRAMABLE ZELIO DE SCHNEIDER ELECTRIC Y LOGO DE SIEMENS
Solución en lenguaje LADDER de Zelio Logic:
En la figura anterior se presenta el programa en el modo de simulación, con el que es posible comprobar el funcionamiento del mismo. Observa cómo al estar abierto el pulsador (entrada I1), la tensión no llega al relé intermedio (M1). Como el contacto m1 del relé intermedio es normalmente cerrado, la tensión sí llega a la salida Q1 y ésta se encuentra activada. Fíjate cómo las líneas y elementos que no tienen tensión el programa las presenta coloreadas en azul y las que sí tienen tensión las presenta coloreados en rojo. Para activar este modo de simulación, en la pantalla del ZelioSoft se ha de pulsar el botón de modo de simulación (arriba a la derecha, marcado con una S) y posteriormente el botón de “Run”, debajo del primero.
89
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Si accionamos el pulsador I1, observaremos cómo la situación es ahora la contraria, comprobando el correcto funcionamiento del mismo. En adelante puedes realizar tú mismo la comprobación del funcionamiento de los circuitos programados mediante la simulación que te permite el programa Zelio Logic.
FUNCIÓN “OR” O SUMA LÓGICA Expresiones lógicas de la función:
Tabla de verdad
Diagrama eléctrico cableado
Ecuación lógica
S=a+b
Solución en lenguaje LADDER de Zelio Logic:
90
Diagrama lógico de bloques
RELÉ PROGRAMABLE ZELIO DE SCHNEIDER ELECTRIC Y LOGO DE SIEMENS
FUNCIÓN “AND” O PRODUCTO LÓGICO Expresiones lógicas de la función:
Tabla de verdad
Diagrama eléctrico cableado
Ecuación lógica
S=a
Diagrama lógico de bloques
b
Solución en lenguaje LADDER de Zelio Logic:
91
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
FUNCIÓN “NOR” O SUMA LÓGICA NEGADA Expresiones lógicas de la función: Tabla de verdad
Diagrama eléctrico cableado
Ecuación lógica
S
= a + b
Solución en lenguaje LADDER de Zelio Logic:
92
Diagrama lógico de bloques
RELÉ PROGRAMABLE ZELIO DE SCHNEIDER ELECTRIC Y LOGO DE SIEMENS
FUNCIÓN “NAND” O PRODUCTO LÓGICO NEGADO Expresiones lógicas de la función: Tabla de verdad
Diagrama eléctrico cableado
Ecuación lógica
S=a
Diagrama lógico de bloques
↔ b
Solución en lenguaje LADDER de Zelio Logic:
93
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Ejercicio resuelto. EXTRACCIÓN DE AGUAS DE UN POZO DE RECOGIDA CON DOS BOMBAS Y ALARMA Programar en lenguaje LADDER de Zelio Logic el circuito que resuelve el problema visto anteriormente (página 37) de EXTRACCIÓN DE AGUAS DE UN POZO DE RECOGIDA CON DOS BOMBAS Y ALARMA.
SOLUCIÓN: El diagrama eléctrico cableado que resolvía el problema era:
Por tanto, la solución en lenguaje LADDER de Zelio Logic es:
94
RELÉ PROGRAMABLE ZELIO DE SCHNEIDER ELECTRIC Y LOGO DE SIEMENS
Ejercicio resuelto. TALADRADO CON FIJACIÓN DE PIEZA EN CICLO CONTINUO Programar en lenguaje LADDER de Zelio Logic el circuito que resuelve el problema visto anteriormente (página 39) de TALADRADO CON FIJACIÓN DE PIEZA EN CICLO CONTINUO.
SOLUCIÓN: El diagrama eléctrico cableado que resuelve el problema es:
Por tanto, la solución en lenguaje LADDER de Zelio Logic es:
95
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Puedes comprobar ahora fácilmente el funcionamiento del circuito simplificado obtenido según el procedimiento de las tablas de Karnaugh comparando las salidas que te da la simulación en Zelio Logic con las evoluciones de las etapas del sistema que nos define la tabla de verdad del ciclo de funcionamiento, que se repite a continuación:
A la hora de realizar la simulación para comprobar el funcionamiento, recuerda los siguientes puntos:
1. El valor lógico C1 = 0 significa que el cilindro recibe el aire de mando en el sentido de retraerse o mantenerse totalmente retraído si ya lo está. De igual forma sucede para C2. 2. El valor lógico C1 = 1 significa que el cilindro recibe el aire de mando en el sentido de desplegarse o mantenerse totalmente desplegado si ya lo estaba. De igual forma sucede para C2. 3. El valor lógico Fc3 = 0 significa que el final de carrera no se encuentra accionado; es decir, la pieza que detecta (en nuestro caso el extremo del vástago) no está posicionada justamente debajo del final de carrera. Por ello, si Fc3 = 0, todos los contactos normalmente abiertos con el nombre Fc3 se encontrarán abiertos y todos los contactos normalmente cerrados de Fc3 se encontrarán cerrados. ¡Cuidado con no confundir el estado lógico Fc3 = 0 (final de carrera sin accionar), con que no pasa tensión por el contacto, no es así necesariamente! De igual forma sucede con el resto de finales de carrera. 4. El valor lógico Fc3 = 1 significa que el final de carrera sí se encuentra accionado; es decir, la pieza que detecta (el extremo del vástago), sí está posicionada justamente debajo del final de carrera. Por ello, si Fc3 = 1, todos los contactos normalmente abiertos con el nombre Fc3 se encontrarán cerrados y todos los contactos normalmente abiertos con el nombre Fc3 se encontrarán abiertos. ¡Cuidado con no confundir el estado lógico Fc3 = 1 (final de carrera accionado), con que sí pasa tensión por el contacto, no es así necesariamente! De igual forma sucede con el resto de finales de carrera. Al activar el modo de simulación de ZelioSoft, debes reflejar primeramente el estado de los finales de carrera en sus contactos y observar cómo las sali96
RELÉ PROGRAMABLE ZELIO DE SCHNEIDER ELECTRIC Y LOGO DE SIEMENS
das obedecen al estado que les corresponde según la tabla de verdad. Ve cambiando uno a uno los finales de carrera al pasar de un estado al siguiente y observarás cómo en cada paso las salidas van evolucionando tal y como especifica la tabla de verdad.
Ejercicio resuelto. ACCIONAMIENTO DE PRENSA CON UNA SOLA PULSACIÓN Programar en lenguaje LADDER de Zelio Logic el circuito que resuelve el problema visto anteriormente (página 54) de ACCIONAMIENTO DE PRENSA CON UNA SOLA PULSACIÓN.
SOLUCIÓN: El diagrama eléctrico cableado que resuelve el problema es:
Por tanto, la solución en lenguaje LADDER de Zelio Logic es:
97
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Cuyo funcionamiento puedes comprobar también fácilmente con la tabla de verdad del problema. Ten en cuenta que dado que éste es un problema secuencial, ya no tienes que forzar la variable interna X (representada en el programa por la marca interna M1), porque cambiará sola (es salida a la vez que entrada).
Relé programable Logo de Siemens Características principales Siemens viene comercializando su relé programable Logo ( módulo lógico universal, según la propia denominación de la marca) desde el año 1996. El relé programable Logo lleva integrados el control, la unidad de manejo e indicación, la fuente de alimentación, la interfaz para módulos de ampliación, la interfaz para módulo de programación (card) y cable para PC, una serie de funciones básicas muy utilizadas que van preprogramadas (conexión retardada, desconexión retardada, relés de corriente e interruptor de software), temporizador, marcas digitales y analógicas, y entradas y salidas en función del modelo. Las funciones básicas del microcontrolador incluyen el cambio del estado de funcionamiento del microcontrolador, la transferencia de programas desde el módulo al PC y viceversa, el ajuste del reloj interno y la edición o borrado del programa introducido en el mismo. En el frontal del relé programable existen seis teclas de función. Mediante estas teclas es posible desplazarse por los menús, introducir valores en el programa e introducir y modificar el programa en diagrama lógico de bloques. El relé programable dispone de una pantalla de cristal líquido en la que se visualiza el menú de programación, los parámetros y el programa introducido. Cuando el autómata se encuentra en estado de funcionamiento, se visualizará el estado de las entradas y salidas. En el frontal del microcontrolador existe una interfaz de conexión mediante cable con un PC para la transferencia en los dos sentidos del programa a ejecutar. El ordenador debe estar provisto del software LogoSoft. Se puede conectar también en esta interfaz un módulo de programa o una tarjeta de memoria. 98
RELÉ PROGRAMABLE ZELIO DE SCHNEIDER ELECTRIC Y LOGO DE SIEMENS
Lenguajes de programación El relé programable Logo permite la programación mediante un lenguaje lógico de bloques funcionales propio del microcontrolador. El programa se va introduciendo a partir de estos bloques funcionales desde las teclas del panel frontal y comenzando desde la parte de las salidas. Se puede transferir, también, desde una tarjeta de memoria o desde un PC. Los bloques funcionales transforman informaciones de entrada en informaciones de salida, en base a las reglas del álgebra de Boole. El relé programable Logo dispone de los siguientes bloques funcionales básicos: Funciones AND y AND con activación por flanco. Funciones NAND y NAND con activación por flanco. Función OR. Función NOR. Función XOR (OR exclusiva). Función NOT. A los que se añaden los siguientes bloques de funciones especiales: Temporizador a la conexión. Temporizador a la desconexión. Temporizador a la conexión-desconexión. Temporizador a la conexión memorizable. Relé de parada automática. Relé de impulsos. Relé disipador. Relé disipador con activación por flancos. Temporizadores semanal y anual. Contador progresivo y regresivo. Contador de horas de servicio. Emisor de cadencias simétrico. Generador de impulsos asíncrono. Generador aleatorio. Discriminador para frecuencias. Discriminador analógico. Comparador analógico. Interruptor de alumbrado para escalera. Pulsador de confort. 99
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
Conexionado del relé programable Logo El relé programable Logo se puede alimentar con la siguiente combinación de tensiones: 115 Vca/Vcc. 240 Vca/Vcc. 24 Vcc. 24 Vca. 12 Vcc.
Alimentación La alimentación de los modelos de corriente continua se conectará como sigue: L+ M
El fusible será de 0,8 A para 12/24 V y modelos RC, y de 2,0 A para 24 V del resto de modelos. La alimentación de los modelos de corriente alterna se conectará como sigue: L1 N
Se podrá colocar un varistor para proteger de picos de tensión con una tensión de servicio como mínimo de un 20% superior a la tensión nominal.
Entradas Las entradas en los modelos de corriente continua se conectarán: 100
RELÉ PROGRAMABLE ZELIO DE SCHNEIDER ELECTRIC Y LOGO DE SIEMENS
L+ M
La referencia de potencial de las entradas debe ser la misma que la de la tensión de alimentación, dado que las entradas no están libres de potencial. Las entradas en los modelos de corriente alterna se conectarán: L3 L2 L1 N
Dentro de cada bloque de cuatro entradas se debe alimentar las mismas con la misma fase. Entre bloques distintos se puede cambiar la fase que se conecta a las entradas.
Salidas Si el relé programable Logo dispone de la letra R en su designación de tipo, es un modelo con salidas de relé, con lo que sus contactos están libres de potencial con respecto a la tensión de alimentación y a las entradas. Hay que conectar la fase (o el positivo en caso de corriente continua) a los bornes marcados con un “2”, y los bornes marcados con un “1” se conectarán a la alimentación de tensión de los receptores (borne A1 si se trata de relés o contactores). El otro borne del receptor (borne A2 si se trata de relés o contactores), se conectará al neutro (o a la masa si se trata de corriente continua). DM8...R
L1/L+
Last
Last
N/M
Si el relé programable Logo no dispone de la letra R en su designación de tipo, se tratará de un modelo con salidas de tipo transistor. Estas salidas están 101
CONCEPTOS BÁSICOS DE PROGRAMACIÓN CON MICROCONTROLADORES
a prueba de cortocircuitos y de sobrecargas. En este caso los dos bornes de salida de cada salida del relé programable (Q1 y M), se conectarán directamente a los dos bornes de alimentación del receptor, dado que las salidas del relé, en el caso de salida por transistores, no actúan como un contacto libre de tensión, sino que suministran por sí mismas la tensión necesaria para alimentar al receptor. Es decir, como se representa en la figura siguiente: DM8 24
Carga
102
Carga
RESUMEN El relé programable Zelio, de Schneider Electric, está diseñado para el control de pequeños sistemas automatizados. Su empleo está muy extendido tanto en el sector industrial como en el sector servicios. En el área de servicios-domótica son aplicaciones típicas del relé Zelio la automatización de barreras, cortinas eléctricas, controles de acceso; la automatización de sistemas de riego, bombeo, invernaderos; la automatización de instalaciones de iluminación interiores y exteriores; la automatización de compresores y sistemas de aire acondicionado, etc. El relé programable Zelio dispone de 6 teclas de función en su frontal con las que se pueden gestionar los menús, introducir parámetros, editar los esquemas de contactos necesarios para la programación y emplearlos para simular pulsadores en los esquemas de mando. Se puede programar según dos lenguajes distintos: el lenguaje LADDER, o diagrama de contactos (muy parecido al esquema eléctrico cableado), y el lenguaje FBD (Function Block Diagram), prácticamente idéntico al diagrama lógico de bloques estudiado en la unidad. El relé se puede programar tanto mediante las teclas de función de su frontal (sin necesidad de ningún accesorio adicional), o bien mediante un PC conectado a él que disponga de la herramienta ZelioSoft, en cuyo caso se podrá programar no sólo en LADDER, sino también en FBD. Existen diferentes modelos de relé programable Zelio, que admiten tensiones
de alimentación bien de 24 Vcc o bien de hasta 230 Vca. Pueden disponer solamente de entradas y salidas digitales o bien también de entradas analógicas. En el microautómata Zelio se pueden emplear como contactos las entradas digitales, las salidas digitales, las teclas del frontal de relé programable, los relés auxiliares y los bloques funcionales. Se pueden emplear como salidas las bobinas, las bobinas set-reset y las bobinas de telerruptor. La programación del microcontrolador Zelio permite el empleo de los bloques de función reloj, contador, temporizador, bloque de función analógico y relé auxiliar. En el relé Zelio de 230 Vca, la fase de los 230 V se debe llevar al borne L de la alimentación del relé, a las entradas digitales mediante los contactos libres de tensión de los elementos que queramos conectar a las mismas, y a los bornes marcados con un “1” de los bornes de salida que vayamos a conectar. Asimismo, el neutro de la alimentación lo llevaremos a la alimentación del relé y a uno de los bornes de los receptores que vayamos a conectar a la salida del relé (en el borne A2 si se trata de bobinas de relés o de contactores). Los bornes marcados con un “2” de las salidas del autómata se llevarán al otro borne de los receptores que vayamos a conectar a la salida del relé (en el borne A1 si se trata de bobinas de relés o de contactores).
103
Ejercicios de autocomprobación Rodea con un círculo la V si cada una de las siguientes afirmaciones es verdadera, o la F si es falsa. 31. Los microcontroladores o relés programables están diseñados para el control de pequeños sistemas automatizados.
V
F
32. Los relés programables sustituyen convenientemente a los sistemas de lógica eléctrica cableada, proporcionando ahorros en el diseño e instalación de los sistemas, así como mayor flexibilidad a la hora de realizar cambios en el mismo.
V
F
33. Con las teclas de función del frontal del relé Zelio se puede actualizar la fecha y la hora del reloj interno, borrar el esquema contenido en el relé programable, visualizar los parámetros de los bloques de función, pero no se puede introducir el esquema de mando, operación que se realizará mediante un PC.
V
F
34. El relé programable Zelio admite como lenguajes de programación el lenguaje LADDER, el lenguaje FBD y la programación mediante tablas de verdad.
V
F
35. Zelio lleva incorporados bloques de función tales como reloj, contador, temporizador, bloques de función analógicos y relés auxiliares.
V
F
36. Los relés programables Zelio pueden alimentarse únicamente a una tensión de corriente continua de 24 V.
V
F
37. Existen modelos de Zelio que admiten entradas analógicas, útiles para incorporar información de parámetros que varíen en un rango continuo.
V
F
38. Mediante el software Zelio Logic se pueden realizar simulaciones del funcionamiento de los programas que se realicen antes de su introducción en el relé programable.
V
F
39. Si queremos disponer de un biestable tipo RS durante la programación del Zelio, deberemos programar el mismo en lenguaje LADDER mediante un contacto abierto de realimentación en la línea de mando de su propia bobina.
V
F
40. El relé programable Zelio puede alimentar mediante sus salidas a contactores que funcionen tanto en corriente continua como en corriente alterna.
V
F
Compara tus respuestas con las que te indicamos al final de la unidad. Si has cometido errores, repasa la parte correspondiente del tema antes de proseguir tu estudio.
104
Soluciones a los ejercicios de autocomprobación 1. Verdadero.
12. Verdadero.
2. Falso. (El estado lógico 0 ó 1 asociado a un pulsador depende de si está no pulsado o pulsado, respectivamente, pero esto es diferente de si conduce la corriente o no. Para que conduzca la corriente, su contacto auxiliar necesitará ser normalmente abierto si su estado lógico es 1, pulsado, o normalmente cerrado si su estado lógico es 0, no pulsado.)
13. Verdadero.
3. Verdadero. 4. Verdadero. 5. Falso. (Sí es posible representar las funciones lógicas expresadas mediante ecuaciones lógicas como esquemas eléctricos cableados, son dos formas equivalentes de expresión de funciones lógicas.) 6. Falso. (De hecho, las formas canónicas de expresar la ecuación algebraica a partir de las tablas de verdad proporcionan las formas menos simplificadas de la función lógica. Para simplificarlas habrá que trabajar con la ecuación a base de aplicar las reglas del álgebra de Boole o aplicar procedimientos de simplificación como las tablas de Karnaugh o equivalentes.) 7. Verdadero. 8. Falso. (Se deben ordenar según el código reflejado de Gray, dado que así las casillas adyacentes en horizontal y vertical son también contiguas; es decir, de una a otra solamente cambia el valor de una variable.) 9. Falso. (No es posible, dado que seis no es potencia de dos; es decir, no es igual al número dos elevado a ningún número entero y positivo.) 10. Verdadero. 11. Falso. (Todo lo contrario. De hecho, para funciones lógicas de más de 5 variables el método de las tablas de Karnaugh se hace prácticamente inabordable manualmente, habría que acudir a procedimientos de simplificación por ordenador.)
14. Verdadero. 15. Falso. (En los sistemas combinacionales las variables de salida dependen únicamente de las variables de entrada en cada momento.) 16. Falso. (Sí es posible. De hecho, es el tipo de problemas más adecuados para su resolución por este método.) 17. Falso. (La salida de la célula básica de memoria depende no solamente del valor de la entrada, sino del valor que tenía la propia salida anteriormente, con lo cual, por definición, constituye un sistema secuencial.) 18. Falso. (Las posiciones que queden libres en la tabla de Karnaugh, que marcaremos con el símbolo “X”, se podrán incluir a discreción en los grupos que vayas realizando para agrupar los unos con objeto de obtener los grupos más grandes posibles y, por tanto, la mayor simplificación.) 19. Verdadero. 20. Verdadero. 21. Falso. (Es un método perfectamente válido para los sistemas secuenciales; de hecho, su metodología de trabajo muy estructurada, lo hace idóneo para la resolución de estos sistemas complejos.) 22. Verdadero. 23. Faso. (El objetivo del método GRAFCET no es obtener soluciones lo más reducidas posibles, puesto que no incluye procedimientos de simplificación. Su objetivo consiste en estructurar la resolución del problema para llegar a una solución válida independientemente de que sea más o menos simplificada.) 24. Verdadero. 25. Verdadero. 105
26. Falso. (No es necesario, se puede conseguir mediante marcas que se activan en el primer ciclo; por ejemplo, con Logo, o mediante estructuras de control con contactos cerrados provenientes de los bloques RS del resto de las etapas.) 27. Verdadero. 28. Falso. (La TABLA DE ASIGNACIÓN DE VARIABLES no constituye el GRAFCET de segundo nivel. Lo constituye la “descripción técnica y operativa”, también llamado “GRAFCET con sensores y accionamientos”. La tabla de asignación de variables se emplea al trasladar la estructura del GRAFCET al lenguaje concreto del autómata que se empleará.) 29. Falso. (La activación de una etapa en GRAFCET viene determinada por la activación de un bloque funcional en el microcontrolador de tipo B .) 30. Verdadero.
106
31. Verdadero. 32. Verdadero. 33. Falso. (Con las teclas de función del frontal del relé Zelio sí se puede introducir el esquema de mando, no es imprescindible hacerlo con el PC, aunque también se puede.) 34. Falso. (No admite la programación mediante tablas de verdad.) 35. Verdadero. 36. Falso. (También se pueden alimentar a una tensión alterna de 230 V.) 37. Verdadero. 38. Verdadero. 39. Falso. (El biestable tipo RS es un bloque funcional que ya viene definido en el lenguaje LADDER del Zelio, no es necesario programarlo.) 40. Verdadero.