Objetivos Generales
Objetivos Generales
UA Unidad de aprendizaje
Lenguajes y programas en los autómatas programables
2
Objetivos
Objetivos generales
Conocer las herramientas necesarias para el diseño del programa de control de
automatismos.
Comprender la filosofía de programación de autómatas programables.
Objetivos específicos
Conocer un sistema lógico combinacional y secuencial.
Diseñar un esquema lógico a partir de la construcción de una tabla de verdad y la función
lógica asociada.
Aplicar la metodología GEMMA para el análisis de automatismos más complejos.
Conocer los tipos de variables y cómo hacer su asignación a direcciones de memoria.
Diferenciar los tipos de lenguajes de programación de un autómata programable.
Conocer la diferencia entre la programación lineal y la estructurada.
Entender el funcionamiento de un entorno de programación, la estructura del programa de
usuario y las distintas variables utilizadas.
Realizar una tabla de verdad y la función lógica asociada.
Realizar un GRAFCET de un proceso.
Realizar la función lógica de un diagrama lógico.
Mapa conceptual o esquema de contenidos
4 Estructuras de programación
4.1 Introducción
4.2 Programación lineal
4.3 Programación estructurada
4.4 Programación multitarea
4.5 Tareas rápidas e interrupciones
4.6 Parametrización de módulos funcionales
4.7 Programación de procesadores periféricos inteligentes
Introducción
Las automatizaciones son una serie de procesos, cada uno de los cuales se dividen en varias tareas.
Estas tareas siguen una lógica que debe ser analizada para que, finalmente, se pueda desarrollar un
programa de control válido y robusto.
El análisis de los procesos y la comprensión de la lógica del automatismo ayudarán a realizar un
esquema gráfico de funcionamiento como el que brinda la herramienta GRAFCET. Además deben
incorporarse elementos que describen los modos de marcha y de parada del sistema, como pueden
ser los preposicionamientos y las alarmas previstas. La herramienta gráfica GEMMA ayuda a incluir
todas estas condiciones en un diagrama de control tipo GRAFCET.
El desarrollo del programa de control, a partir de los diagramas gráficos, es la definición en un lenguaje
de programación del programa de usuario.
Es preciso conocer el entorno de programación que ofrece el autómata a instalar y usar un lenguaje de
programación compatible con este entorno. Los lenguajes de alto nivel son de gran ayuda al usuario
por su alto grado de comprensión para cualquier usuario, sin embargo, tienen sus limitaciones.
La programación estructurada, frente a la lineal, permite desarrollar programas más complejos, ya que
estos pueden dividirse en bloques que realizan tareas específicas. Las llamadas entre estos bloques
permiten que la secuencia de instrucciones se ejecute de manera coordinada.
En Automatizaciones 4.0, S. L., se desarrolla el programa de control que se cargará en los autómatas
programables que instalan a sus clientes. Para llegar a este programa, inician una fase de diseño de la
automatización a través de herramientas que traducen el automatismo a un lenguaje gráfico.
Posteriormente, se desarrolla el programa de control en un lenguaje compatible con el entorno de
programación de los autómatas instalados.
UA 2: Lenguajes y programas en los autómatas programables
1.1 Introducción
Los sistemas automatizados han evolucionado desde sistemas con multitud de componentes físicos
que establecían la lógica mediante la conmutación de relés a sistemas digitales donde los elementos
forman parte de un programa de control.
De esta manera, se ha simplificado el circuito físico, pero al mismo tiempo, se ha aumentado la
complejidad de la lógica de control y, por tanto, estos sistemas requerirán de una planificación del
diseño, tanto a nivel de elementos de control como de organización en planta.
En el diseño de un automatismo lógico, intervienen los siguientes elementos de control:
Existen también los subsistemas analógicos, es decir, subsistemas donde los estados posibles son
infinitos. Imagina, por ejemplo, la lectura de un sensor de temperatura. Esta lectura puede ser tan
precisa como se quiera, reservando muchas posiciones de memoria para los decimales. Sin embargo, si
se define una resolución determinada, podemos convertir un sistema de numeración infinita en uno
finito. Por tanto, los subsistemas analógicos, al definir su precisión o resolución, son tratados como
subsistemas digitales. Por ello, todos los subsistemas serán lógicos o digitales.
Los sistemas lógicos se diseñan mediante métodos basados en el álgebra de Boole, es decir, requieren
de conocimientos en números binarios, operaciones con bits y registros.
Nota
Los sistemas todo o nada, también llamados sistemas analógicos, son representados por
variables tipo bit que pueden tomar los valores 0 o 1.
Los sistemas digitales pueden tomar valores finitos y son representados por variables
numéricas. Los números son representados mediante una variable formada por un conjunto de
bits. Una agrupación de bits forma un byte. Si se necesita más espacio para la variable, existen
también agrupaciones de bytes.
1 Esquema de relés
2 Basado en puertas lógicas
Representan la lógica que se aplica a una serie de entradas para obtener unas salidas determinadas.
Ejemplo
Entradas: A, B y C.
Salidas: S.
Mientras que la variable A y B sean ciertas (estado = 1) o la C o la D sean falsas, a la vez que
la E sea cierta, entonces la salida S será cierta.
Una variable representará los valores de una magnitud determinada. Por ejemplo, una variable lógica A
podrá representar el valor de la tensión en una bobina de un relé. Si se le aplica una tensión a la bobina
de 24 V, la variable A valdrá 1 y, en ausencia de tensión, dicha variable valdrá 0. Observa dos ejemplos
en la siguiente tabla:
Asignaciones de variables lógicas a
determinadas magnitudes
1 2 3
4
1
Dividir el sistema en subsistemas
2
Identificar en cada subsistema las magnitudes de entradas y salidas
3
Asignar a cada magnitud de entrada y salida sus correspondientes variables. Estas variables
podrán ser lógicas o numéricas
4
Hallar en cada subsistema la función que relaciona las entradas con las salidas (función de
transferencia)
Definición
Función de transferencia
Es aquella expresión matemática que relaciona las variables de entrada en un subsistema con
las variables de salida. Puede ser de tipo lógico, algebraico o numérico.
Subsistemas
Entradas
Salidas
Función de transferencia
Actividad de aprendizaje 1
A continuación, realizarás una actividad en la que se te pedirá que identifiques los siguientes
elementos: función de transferencia, entradas y salidas.
Vas a instalar un sistema automatizado que consiste en el control del aforo de vehículos en un
garaje. Para ello, instalas un sensor a la entrada que se activará cada vez que pase un vehículo y
así vaya realizando un conteo acumulado hasta que se llegue al número de vehículos máximo
de aforo. Una vez que suceda este evento, se encenderá un indicador luminoso. Identifica
entrada, salida y función de transferencia, al elegir entre las opciones.
Actividad de aprendizaje 2
A continuación, realizarás una actividad en la que se te pedirá que asocies una variable de tipo
digital a las entradas y salidas de un sistema automatizado.
Estás diseñando una automatización que consiste en lo siguiente: una electroválvula permite el
llenado de un neumático mediante un sistema de aire comprimido. Existe un sensor de presión
que, mientras no llegue a la presión máxima, activa la electroválvula para que se pueda
continuar con el llenado. ¿Qué variables utilizarás para representar la electroválvula y el sensor
de presión?
b. El sensor de presión será la variable I, que valdrá 0 cuando la presión del neumático es
menor que la máxima y 1 cuando sea igual o mayor que la máxima.
1 Sistema combinacional
1
Es aquel cuyas salidas dependen únicamente del estado de las entradas,
independientemente del estado inicial de partida. Es decir, la función de transferencia
que obtiene la variable de salida va a ser una combinación de las variables de entrada a
través de los operadores lógicos (OR, AND, NOT).
2 Sistema secuencial
2
Es aquel cuyas salidas dependen no solo del estado de las entradas, sino además del
estado inicial del sistema. De esta manera, la salida en estos sistemas va a depender de
la combinación de las entradas y del estado anterior en que quedaron las entradas. Estos
estados anteriores se almacenan en unas variables denominadas “variables de estado”.
Ejemplo
ENTRADAS SALIDA
PASO N. º
A B C
0 0 0 0
1 1 0 1
2 0 0 1
3 0 1 0
4 0 0 0
Tabla de verdad que representa un comportamiento de un proceso.
Puedes observar que las mismas combinaciones de las entradas de las variables A y B provocan
valores distintos de la variable de salida S, en concreto, en el paso N.º 2: A = 0, B = 0; S = 1,
mientras que en el paso N.º 4: A = 0, B = 0; S = 0.
Es decir, el estado de S depende no solo de los estados de las entradas. Depende también de
qué valores anteriores de A y B se parte. Así pues, el estado anterior al paso N.º 2 es: A = 1, B = 0,
mientras que el estado anterior del paso N.º 4 es: A = 0, B = 1.
En los sistemas combinacionales las funciones de transferencia que dan como resultado las salidas
relacionan las variables de entrada a través de los operadores lógicos AND, OR y NOT.
En los sistemas secuenciales, las funciones de transferencia relacionan, además, las variables de
estado o de memoria que contienen los estados anteriores.
Estas variables de estado se suelen denominar SET (almacenamiento de 1 lógico) y RESET
(almacenamiento de 0 lógico).
La célula básica de memoria que almacena estos estados de memoria se llama BIESTABLE, los cuales
están formados por puertas lógicas interconectadas.
El proceso de diseño de un automatismo combinacional consta de una serie de fases bien definidas.
Estas son las siguientes:
1 Obtención de la tabla de verdad
Una vez que se ha diseñado el esquema lógico, se procederá a la implantación de ese esquema
funcional a través de la materialización en alguna tecnología (bien cableada o programada).
Ejemplo
Queremos diseñar el esquema lógico de un motor trifásico “M”, accionado por un pulsador de
encendido “ENC” que activará la bobina de un contactor “KM”. Podrá detenerse en cualquier
momento mediante un pulsador de parada “PARO”.
Además, el motor estará protegido mediante un relé térmico “F” que abrirá sus contactos cuando
circule una sobreintensidad por el motor.
Para diseñar este automatismo combinacional realizaremos las tres fases:
1 2 3
Tabla de verdad Función lógica Esquema lógico
Tabla de verdad
Debes preguntarte: ¿cuáles son las condiciones para que la variable M esté activa (valor = 1)?
La respuesta es:
ENTRADAS SALIDA
ENC PARO F M
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1
Función lógica
La función lógica se formaría con la simultaneidad de las tres entradas, es decir, usando el
operador AND o bien el producto de las tres variables:
M = ENC.PARO.F (solo cuando ENC = PARO = F = 1 entonces M vale 1).
Esquema lógico
El operador booleano que se representa indica que las entradas “ENC2”, “PARO” y “F” tienen que ser
ciertas simultáneamente para que se active la salida “M” (motor).
Aplicación práctica 1
Duración: 20 minutos
Objetivo:
Enunciado:
María está diseñando un esquema lógico de un sistema cuyo comportamiento es el siguiente:
Una cinta transportadora es movida por un motor (M) y accionada por un pulsador de marcha
(PM). Traslada una hilera de botellas. En un punto de la cinta existe un sensor (S) que cuenta el
número de botellas. Cuando este es igual a 10, entonces se para la cinta y comienza otro
proceso.
Ayuda a María a obtener la tabla de verdad del proceso, sabiendo que:
En Automatizaciones 4.0, S. L., cuando se diseñan esquemas lógicos, se deben de nir las
condiciones que originan las salidas en función del estado de las entradas y otros eventos. Son
los automatismos secuenciales. La elaboración de un diagrama de ujo les ayuda a de nir las
condiciones que hacen pasar de una etapa a otra del proceso.
En un automatismo secuencial se suceden distintas operaciones cuyos nexos de unión son condiciones
lógicas que hacen que se siga un ujo de funcionamiento en el proceso. Puedes ver un diagrama de
ujo en el siguiente esquema:
Desde los años setenta han aparecido distintas metodologías de representación de sistemas
secuenciales. No obstante, estas metodologías de representación eran poco prácticas y difícilmente
interpretables, lo que di cultaba el mantenimiento de las instalaciones que materializaban estos
diagramas por parte de personal no especializado.
Ante la necesidad de crear una metodología uni cada y práctica, a la vez que usable, la AFCTE
(Association Francaise pour la Cybernétique Économique et Technique) creó una comisión cuyos estudios
dieron lugar a la creación de un método denominado GRAFCET (Grá co Funcional de Control de Etapas
y Transiciones).
1.6 GRAFCET: resumen histórico
Una herramienta de diseño de automatizaciones muy utilizada en Automatizaciones 4.0, S. L., es
la representación grá ca de GRAFCET. Se trata de una representación grá ca funcional del
proceso muy intuitiva y que proporciona un método sistemático de elaboración.
El método GRAFCET nace de la idea de crear un grá co funcional, fácilmente interpretable por los
distintos profesionales, independientemente de su especialización (ingeniería de diseño, personal de
producción, de mantenimiento).
A partir de 1977 se crean una serie de metodologías de representación grá ca, entre las que destacó el
GEMMA (Guide d´Étde des Modes de Marche et Arrêt) que, desde entonces, ha servido como apoyo del
sistema GRAFCET.
En los años ochenta se produjeron normalizaciones en el ámbito de los diagramas funcionales de los
sistemas automatizados con el n de uni car criterios en la representación.
Sabías que...
Actualmente, los autómatas programables tienen funcionalidades que permiten traducir los
GRAFCET a un lenguaje máquina entendible por el autómata. No obstante, no debe confundirse
el GRAFCET con un lenguaje de programación. Se trata de un método grá co que, aunque
utiliza el álgebra de Boole para de nir las condiciones lógicas, constituye solo una herramienta
grá ca que facilita la programación en pasos posteriores.
Un proceso se divide en distintas operaciones. Una etapa se corresponde con una operación. Si
la operación es compleja, se denomina macroetapa.
Las macroetapas se dividen en etapas más elementales que llevarán asociadas una variable
de estado.
El gráfico indicará la secuencia de las etapas, condiciones lógicas para la transición de una
etapa a otra (condiciones de transición) y las ecuaciones lógicas de las variables de estado de
cada etapa.
El gráfico también contendrá las relaciones lógicas entre entradas y salidas de cada etapa.
De forma esquemática y a nivel general, puedes ver en el siguiente esquema cómo se estructura el
GRAFCET:
En Automatizaciones 4.0, S. L., conocen bien la aplicación del GRAFCET. En primer lugar, es
necesario conocer cuáles son los elementos de base del diagrama (simbología utilizada) y sus
reglas de evolución (representación de las condiciones lógicas en el diagrama).
El GRAFCET está basado en una serie de elementos y reglas de evolución, las cuales se van a
enumerar a continuación:
Elementos de base
Reglas de evolución
Las transiciones
Representan las condiciones lógicas que deben cumplirse para que finalice una etapa y se suceda
la inmediatamente posterior. Gráficamente se representan mediante líneas cruzadas con las líneas
de evolución.
Los reenvíos
Representan la procedencia o destino de las líneas de evolución. Gráficamente tienen la forma de
flecha.
Mensajes de interpretación
Son mensajes asociados a las etapas o a las transiciones para indicar la actividad desarrollada o las
relaciones entre variables del sistema que deben cumplirse.
Entre dos etapas solo existe una única condición de transición, que será una función lógica
combinacional cuyo resultado será un “1” o un “0” lógico.
Arranque en frío
El arranque en frío es la inicialización de un proceso, sin existir memoria de ninguna situación
anterior. Por tanto, no existe una variable de estado que almacena ese estado anterior. Cuando se
produce un arranque en frío solo se activan las etapas iniciales, estando el resto de etapas
desactivadas.
Arranque en caliente
El arranque en caliente es la inicialización de un proceso donde se ha guardado la situación
anterior. Es decir, existe una variable de estado que almacena ese estado anterior. Por ello, al
producirse un arranque en caliente se activan las etapas iniciales o bien se mantiene el estado
anterior. El que ocurra una situación o la otra va a depender de una tarea previa de decisión.
Estas situaciones indican que la condición de transición se encontrará en los siguientes modos:
Actividad de aprendizaje 3
A continuación, realizarás una actividad en la que se te pedirá que identifiques las etapas de un
proceso sencillo.
Estás diseñando una automatización que consiste en un montacargas accionado por un motor
que lo subirá o bajará. Inicialmente el montacargas está en una planta intermedia y cuando se
pulsa un pulsador de marcha, va hacia la última planta. Al llegar allí, inmediatamente baja hasta
la planta baja y así sucesivamente mientras que se mantenga pulsado el pulsador de marcha.
¿Qué estados identificas en este proceso?
a) Las etapas son: ascensor en posición inicial, ascensor hacia arriba, ascensor en planta alta,
ascensor hacia abajo y ascensor en planta baja.
b) Las etapas son: ascensor hacia arriba, ascensor en planta alta, ascensor hacia abajo y
ascensor en planta baja.
c) Las etapas son: ascensor en posición inicial, ascensor en planta alta y ascensor en planta
baja.
Consiste en un alimentador de piezas que, cuando está en la posición de avance, permite que un brazo
con una pinza sujete dicha pieza y a continuación la desplaza 90° hacia la derecha, soltándola en ese
punto. Una vez realizada esta operación, el brazo gira a la izquierda y el alimentador pasa a posición de
retroceso, encontrándose los elementos preparados para repetir el nuevo ciclo.
Todo el proceso se llevará a cabo mediante una serie de sensores de posición y unos actuadores
(denominados “receptividades” en la imagen) que materializarán el automatismo.
0 Posicionamiento inicial.
4 Soltado de pieza.
Por tanto, el funcionamiento del proceso podemos representarlo gráficamente mediante el GRAFCET
funcional que aparece en el siguiente esquema:
GRAFCET funcional del proceso
En este esquema puedes observar que se han indicado las condiciones de transición entre etapas. Así,
por ejemplo, si te fijas en el paso de la etapa 3 (“Giro brazo 90° a derecha”) a la 4 (“Soltar pieza”), solo se
activará la 4 y se desactivará la 3 cuando el brazo esté en la posición derecha.
El siguiente paso es la representación del gráfico con sensores y actuadores (GRAFCET operacional).
Puedes verlo en el siguiente esquema:
GRAFCET con sensores y accionamientos
Para finalizar con el diseño, se aborda ahora la tercera fase o fase de diseño del sistema de control. En
esta parte se representa gráficamente cuál es la lógica que sigue el proceso.
Para ello, utilizamos biestables RS. Estos biestables se representan a continuación en la siguiente figura:
Representación de biestable RS
Donde:
Así pues, utilizando estos biestables, el esquema de control queda como sigue:
Puedes distinguir dos partes en este gráfico de control. A la izquierda se representa la parte
secuencial, mientras que a la derecha se representa la parte combinacional.
Si te fijas primero en la parte secuencial y te centras en el biestable B1, comprobarás que la lógica es
bien sencilla.
El reseteo o desactivación de la etapa 1 (Q1) se producirá cuando se active la etapa 2, es decir, cuando
Q2 esté activo (ver A en la figura anterior).
El set o activación de Q1 se producirá cuando: Q0, S1, S3 y S5 estén activos simultáneamente, o bien Q6
y S1 estén activos simultáneamente (ver B en la imagen anterior).
En cuanto a la parte combinacional, observa, por ejemplo, la condición para que se accione A −.
Se aprecia como para accionar A − debe estar la etapa 6 activada o bien la etapa 0.
Aplicación práctica 2
Duración: 30 minutos
Objetivo:
Enunciado:
En el montacargas de la tercera actividad de aprendizaje de la unidad, se han identificado las
siguientes etapas: E0, E1, E2, E3 y E4, donde E0 es la etapa correspondiente al estado inicial del
montacargas.
Los sensores y actuadores son:
Los diseñadores de Automatizaciones 4.0, S. L., se enfrentan a diario con procesos complejos
que contienen multitud de etapas. Es entonces cuando resulta útil la utilización de macroetapas
que permiten representar el proceso de manera más simple. En una segunda fase, se
desarrollan las macroetapas, es decir, se va a nivel de detalle mayor.
De nición
Macroetapa
Representación de la agrupación de una serie de etapas, cuya utilidad es la de poder
representar un proceso de manera global en una primera fase de diseño.
Puedes observar que se componen de un número, una identi cación de la macroetapa y una etiqueta.
Una vez insertadas las macroetapas en el GRAFCET, deben ser de nidas en detalle. Es lo que se
conoce con el nombre de “expansión de la macroetapa”.
Expansión de una macroetapa
Cuando se introducen macroetapas en un gráfico funcional, debes tener en cuenta las siguientes reglas
en relación a:
D Macroetapas anidadas
E Subrutinas
Macroetapas anidadas
Pueden anidarse macroetapas, es decir, dentro de una macroetapa puede haber otra y así
sucesivamente.
Subrutinas
En muchas ocasiones, las macroetapas son utilizadas como subrutinas. De este modo, una misma
expansión de una macroetapa puede ser llamada desde distintas macroetapas en el gráfico
funcional. La única restricción es que no puede ejecutarse simultáneamente una misma expansión,
llamada desde dos macroetapas en dos puntos distintos del gráfico.
Hasta ahora has visto la estructura de un GRAFCET de tipo lineal, es decir, las etapas se suceden
secuencialmente una tras otra sin existir bucles, bifurcaciones, etc. Sin embargo, en procesos
complejos es necesario representar condiciones que requieren otro tipo de estructuras.
Las tres estructuras básicas de un GRAFCET son las siguientes:
A Estructura lineal
Estructura lineal
Se trata de una secuencia lineal de etapas, unidas por líneas de evolución y condiciones de
transición. Cumplen las siguientes propiedades:
a. En la divergencia en “O” se inician varios caminos posibles, a cada uno de los cuales se podrá
iniciar si se cumple su condición de transición correspondiente (por ejemplo, en la imagen
anterior, se iniciará la etapa 20 si se cumple la condición C9-2).
b. Cada camino posible puede ser una estructura lineal u otra más compleja.
c. Finalmente, estos caminos convergen en el gráfico para poder cerrar el ciclo.
d. Cada ramal de divergencia es una posibilidad de flujo del proceso. Dependiendo de cuál sea la
condición de transición que se cumpla, el proceso se conducirá por uno u otro camino. Solo
discurrirá el proceso por uno de estos caminos.
a. En la divergencia en “Y” se inician varios caminos. Todos ellos se iniciarán si se cumple una
única condición de transición (en la imagen anterior, la condición es C9).
b. Cada camino puede ser una estructura lineal u otra más compleja.
c. Finalmente, estos caminos convergen en el gráfico para poder cerrar el ciclo.
d. Todos los ramales de divergencia se iniciarán simultáneamente en el momento en que se
cumpla la condición de transición común.
Recuerda
3
En un diagrama de flujo las tareas se ejecutan secuencialmente en un barrido del
procesador. Sin embargo, en un GRAFCET es el proceso el que determina cuándo se
ejecutan las tareas, independientemente del ritmo de procesamiento.
4 Simultaneidad de tareas
4
Un diagrama de flujo no puede representar proceso multitarea, mientras que un
GRAFCET puede hacerlo. Es el caso que ocurre, por ejemplo, en una estructura de
divergencia y convergencia en “Y”.
5
La ejecución de un bucle en un diagrama de flujo significa que en ese momento solo se
pueden ejecutar las tareas que forman parte de dicho bucle. Sin embargo, en un
GRAFCET pueden existir otras tareas externas al bucle que pueden estar ejecutándose
simultáneamente.
6 Separación combinacional/secuencial
6
Un GRAFCET debe separar las tareas combinacionales de las secuenciales, mientras que
un diagrama de flujo no hace tal distinción.
Las etapas iniciales en el funcionamiento de un sistema son las correspondientes a arranque en frío y a
arranque en caliente.
Un arranque en frío es el inicio del proceso en la primera vez. Sin embargo, un arranque en caliente es
la iniciación del proceso tras una interrupción anómala del sistema. Un ejemplo sería el corte de tensión
eléctrica durante el funcionamiento de un proceso. En el arranque en caliente se deben conservar
valores previos a la interrupción, para que se pueda arrancar en las mismas circunstancias anteriores al
corte.
Tanto el arranque en caliente como en frío forman parte del tratamiento preliminar, donde debe
decidirse cuál de los dos tipos de arranque se va a ejecutar. Existen unas variables internas cuyo valor
determinará el tipo de arranque que debe hacerse.
La estructura de una GRAFCET dividida en bloques de ejecución es la siguiente:
Tratamiento preliminar
Tratamiento secuencial
Tratamiento combinacional
Estructura de un GRAFCET en bloques de
ejecución
El tratamiento preliminar se ejecuta solo en el primer ciclo después de un arranque. El arranque será en
frío o en caliente. El arranque en caliente recuperará datos almacenados previos a la interrupción y las
variables de sistema que determinará el preposicionamiento (estado en que debe comenzar de nuevo
el proceso tras una interrupción).
Los tratamientos secuencial y combinacional se ejecutan durante todo el proceso de manera cíclica,
una vez que se haya finalizado el tratamiento preliminar.
Otra cuestión que hay que considerar es la activación de una alarma cuando se produzca una situación
anómala durante el funcionamiento del proceso. Para incorporar esta circunstancia en el GRAFCET se
establece una condición genérica de alarma común a todas las etapas del GRAFCET que interrumpiría
el funcionamiento del proceso en ese momento.
Actividad colaborativa 1
En esta actividad vas a continuar la aplicación práctica anterior. Deberás identificar los sensores y
actuadores en el proceso del montacargas para elaborar el gráfico GRAFCET operacional.
Comparte tu diagrama con el resto de compañeros/as y comprobad que habéis elegido las
mismas acciones y condiciones de transición entre etapas.
Para realizar las Actividades colaborativas debes acceder a la página principal del curso, allí
encontrarás la información necesaria para realizarla. Podrás identificar las Actividades
colaborativas por la numeración correspondiente.
1.14 Puestas en marcha y paradas: GEMMA
En Automatizaciones 4.0, S. L., representan los procesos mediante la metodología GEMMA. Esta
herramienta permite introducir en un GRAFCET los modos de marcha y paro posibles que van a
producirse. De esta manera, se tiene en un GRAFCET toda la información completa que permite
desarrollar el programa de control.
El método GEMMA se crea como desarrollo de una herramienta gráfica que permita diseñar los
distintos comportamientos de un proceso. Consiste en la representación de una serie de estados
tipificados del proceso (fotografías en distintos momentos del proceso) y también de la posible
evolución entre estos estados.
Por tanto, la herramienta GEMMA permitirá tener una hoja de ruta sobre cómo debe avanzar el sistema
en los distintos estados posibles.
En primer lugar, es preciso hacer las siguientes consideraciones:
10
Son todos los estados posibles que pueden producirse en un fallo del proceso. Se
encuentran tipificados en GEMMA los siguientes:
Mediante el diseño del proceso basado en el método GEMMA se avanza en el diagrama GRAFCET que
hasta ahora solo reflejaba los estados de funcionamiento, sin contemplar las situaciones de paro y de
fallo.
El método GEMMA viene a completar el diagrama para contemplar todos estos casos.
Se deben seguir unos pasos sistematizados para aplicar GEMMA. Estas etapas se muestran a
continuación:
Actividad de aprendizaje 4
A continuación, realizarás una actividad en la que se te pedirá que definas un bucle GEMMA al
establecer la secuencia de estados posibles.
Has completado el diseño de una automatización, pero aún te queda por definir el
comportamiento del sistema ante un fallo inesperado. Se quiere que cuando el sistema esté en
producción y se produzca un fallo, debe seguirse produciendo con el fallo, demandarse una
parada a final de ciclo y que el paro se produzca en el estado inicial. ¿Cuál sería la secuencia de
estados GEMMA?
El paro de emergencia es una situación que puede producirse desde cualquier etapa del proceso.
Puede considerarse como si cualquier etapa dispusiera de una bifurcación de tipo “O” (ver siguiente
imagen) que posibilitara la salida hacia un paro de emergencia (estado D1 de GEMMA). Sin embargo,
cuando el proceso es complejo y presenta muchas etapas, es poco operativo en la práctica materializar
la parada de emergencia de esta forma.
Se recurre entonces a que una situación de parada provoque un bloqueo inmediato de todas las
acciones asociadas a cada etapa y que se entre en un GRAFCET de alarma genérico donde se decide
cómo actuar ante esta parada.
Tratamiento de un paro de emergencia en un
GRAFCET
Inicialmente el motor está parado. Al pulsar un pulsador de marcha PM, se activa un contactor
KMD que mueve el motor a derechas durante un tiempo T1 controlado por un temporizador.
Una vez que ha transcurrido el tiempo T1, se activará el contactor KMI que mueve el motor a
izquierdas que girará durante un tiempo T2 controlado por otro temporizador.
Finalizado este ciclo, si sigue el suministro eléctrico, se iniciará un segundo ciclo, y así
sucesivamente.
En cualquier momento del proceso puede pulsarse un pulsador de parada de emergencia que no
parará el proceso hasta que este llegue a final de ciclo.
Como pulsadores tenemos:
PM (normalmente abierto)
Valdrá 1 cuando se pulse y 0 cuando no esté pulsado.
PE (normalmente cerrado)
Es la parada de emergencia. Los valores de su estado se almacenarán en una variable MPP, de
manera que cuando PE se pulse, se almacenará en MPP el valor 0.
KMI
Es el contactor que mueve el motor a izquierdas.
Modo de paro
Definido por el estado A1 (parada en estado inicial).
Para pasar al estado A1, debe pasar por el estado A2, que se corresponde con la demanda de paro a
final de ciclo. Por tanto, aunque se pulse la parada de emergencia en mitad del ciclo, la parada se
produce al final de este.
De F1 a A2
MPP = 0 (pulsador de parada de emergencia pulsado).
De A2 a A1
Preguntar la condición a final del ciclo y enlazar con la primera etapa; depende su activación de
que exista tensión eléctrica.
2.1 Introducción
La programación del PLC no se limita solo a la elaboración del programa en un lenguaje determinado,
sino que conlleva también una serie de tareas que permitirán que el PLC finalmente pueda ejecutar el
programa de control.
Estas tareas se relacionan a continuación:
Hoy día, el entorno de programación de los PLC permite realizar una compilación del programa en un
simulador de PLC. Por tanto, la carga puede realizarse previamente en un PLC simulado. Esto evitará
transferir al PLC un programa que presente errores y que sería ejecutado con interrupciones.
Definición
Compilación
Acción ejecutada por el procesador que consiste en la traducción del programa en código
fuente (en un lenguaje de programación específico) a un programa en código fuente (lenguaje
entendible por el procesador basado en el código binario de ceros y unos).
El sistema de control de un automatismo contiene la lógica que debe ejecutarse en sus procesos. El
seguimiento de esta lógica reproducirá el funcionamiento correcto del sistema automatizado.
Es crucial poder representar este sistema de control de manera clara, como paso previo a la
elaboración del programa de control.
La creación de símbolos estandarizados ha ayudado de manera importante a la creación de gráficos
que describen los procesos con una mayor claridad. El uso de estos símbolos ha conducido a la
creación de distintos modelos de representación de sistemas automatizados. Estos modelos se
agrupan en los siguientes:
1
Este modelo aplica operaciones aritméticas y del álgebra de Boole a variables de tipo
todo o nada.
Un ejemplo puede ser una alarma S que se activa cuando el contacto C esté cerrado y
los estados A y B estén en estados opuestos.
Si abierto es el estado “0” y cerrado el “1”, entonces la función será:
S = (A.B + A.B) C.
3 3) Descripciones literales
3
Se explica en el siguiente apartado.
Una magnitud digital es aquella que toma valores finitos. Dentro de estas magnitudes encontramos
dos tipos:
1 De dos
De dos estados
estados posibles
posibles (todo-nada)
(todo-nada)
Ejemplo
Una magnitud analógica es aquella que puede tomar un número infinito de valores. Por
ejemplo, la temperatura de un fluido podrá valer cualquier número real con tantos decimales
como sea, por tanto, su rango es infinito. Si definimos una resolución (por ejemplo, tomar solo
dos posiciones decimales), entonces transformamos una magnitud infinita en una variable
discreta. Esto significa que una magnitud analógica se puede representar también con una
variable digital.
Respecto al control de procesos, es preciso indicar qué tipo de variables existen y cuáles son sus
funciones en este control.
Un control de procesos se basa en la observación y manipulación de una variable controlada para que
sus valores sean los deseados y no sean perturbados por otras señales. Para comprender estos
conceptos, debes aprender las siguientes definiciones acerca de las variables que aparecen en un
control de procesos:
Variable controlada
Es la variable que se quiere controlar en el proceso, generalmente una variable de salida.
Perturbaciones
Son aquellas señales que afectan a nuestra variable controlada modificando su valor y, por tanto,
alejándola de los valores que deseamos.
Variable manipulada
Es una variable cuyo valor ha sido modificado por el programa de control.
Control
Es la aplicación de las variables manipuladas para corregir el efecto indeseado de una
perturbación sobre la variable controlada.
Enunciado:
Estás realizando un modelo lógico y necesitas obtener la función lógica a partir de él. Has
llegado al siguiente diagrama:
De texto
Grá cos
Los lenguajes de texto en el ámbito de los PLC suelen ser lenguajes de muy bajo nivel, es decir,
lenguajes poco intuitivos o entendibles por el usuario. Formados por secuencias de instrucciones en
forma de textos, son lenguajes aún complejos para el programador. Dentro de estos tipos se
encuentran los siguientes lenguajes:
Los lenguajes gráficos son considerados como “lenguajes de alto nivel”. Poseen una interfaz gráfica, la
cual facilita su programación al interconectar unos elementos con otros de una manera establecida
por las reglas del propio lenguaje. Estos lenguajes tienen sus limitaciones en cuanto a la configuración
de parámetros, pues aunque hay algunos que son reconfigurables desde el mismo proceso o
mediante una interfaz de parámetros de la máquina, otros solamente son configurables desde la
misma interfaz de programación, lo que afecta al dinamismo del proceso. Dentro de estos tipos se
encuentran los siguientes lenguajes:
4
Utiliza bloques de funciones que generan unas salidas a partir de unas entradas y una
memoria (variable estática). La lógica interna del bloque puede ser combinacional o
secuencial (con variable estática). Además, se emplean las funciones empleadas para
las compuertas lógicas (OR, AND y NOT).
En la figura siguiente tienes un extracto de un programa en lenguaje FBD:
5
Es un lenguaje inspirado en el funcionamiento de los relés. El flujo del proceso va de
izquierda a derecha en cada uno de los escalones en que se divide el programa gráfico.
Las condiciones se establecen mediante unas entradas que serán representadas
mediante contactos (abiertos o cerrados) y elementos auxiliares como contadores,
temporizadores, distintas operadores, etc. Las salidas van a ser siempre en forma de
relés que activarán las salidas físicas del proceso según la lógica establecida.
6
Permiten especificar procesos de automatización mediante flujos lógicos de una forma
secuencial. El programa se estructura mediante subrutinas que tienen como inputs el
resultado de otras subrutinas o bien entradas físicas del PLC. Los flujos que se producen
cambian de dirección, en función de la salida de la subrutina actual, lo que permite
activar una u otra subrutina, dada la dirección que tome el flujo. Es un tipo de lenguaje
que proviene del modelo GRAFCET.
Para que tengas una visión general, puedes observar el siguiente esquema:
Representación de los distintos lenguajes de
programación de un PLC
FUNCIÓN OR
FUNCIÓN AND
FUNCIÓN NOT
FUNCIÓN OR
Función suma lógica. Si alguna de las entradas es verdadera, entonces la salida es verdadera.
FUNCIÓN AND
Función producto lógico. Todas las entradas deben ser verdaderas simultáneamente para que la
salida sea verdadera.
FUNCIÓN NOT
Función negación. La salida es la negación de la entrada booleana.
Estas instrucciones se complementan con otras de inicio de sentencia y asignación de resultados: LOD
(leer variable inicial) y OUT (enviar resultado a salida), y de operaciones de bloques: OR LOD (coloca
bloque en paralelo) y AND LOD (coloca bloque en serie).
Además de las funciones booleanas y las instrucciones antes mencionadas, se emplean otras
instrucciones que realizan otras tareas complementarias. Estas son las instrucciones secuenciales
predefinidas:
TIM
CNT
SET
RST
TIM
Se utiliza para definir un temporizador.
CNT
Se emplea para definir un contador.
SET
Se usa para activar una variable binaria.
RST
Se utiliza para desactivar una variable binaria.
En el sistema operativo STEP 7, desarrollado por Siemens, este lenguaje se denomina STL. En la
siguiente imagen tienes un programa en este lenguaje y la estructura que presentan las
instrucciones:
La estructura del programa se basa en ramas que van de izquierda a derecha. En cada rama se sitúan
las entradas (parte izquierda) y las salidas (parte derecha). Las entradas son variables binarias
representadas como contactos abiertos (como el de la variable I0.1) o cerrados (como el de la variable
I2.3).
Estructura de un programa en lenguaje de
contactos
Las salidas son los relés situados a la derecha que simbolizan el estado de las salidas del autómata.
El programa se ejecuta de izquierda a derecha y de arriba abajo, interpretándose la lógica
representada en las ramas. Por ejemplo:
La lógica de las ramas se interpreta por analogía a los operadores booleanos AND y OR. De esta
manera, dos contactos en serie simbolizan la condición AND, mientras que si están en paralelo,
simbolizan la condición lógica OR.
Video
En el siguiente enlace puedes visualizar un vídeo donde se explican todos los conceptos
básicos que debes saber para programar en lenguaje de contactos (LADDER):
Introducción a LADDER ()
Actividad de aprendizaje 5
Sabes que I0.0, I0.1, I0.2 e I0.3 son pulsadores y Q0.0 y Q0.2 son bobinas. ¿Cuál de las siguientes
situaciones es posible?
c) I0.0 e I0.2 pulsados, I0.1 e I0.3 sin pulsar, activándose las bobinas Q0.0 y Q0.2.
Puerta AND
Puerta OR
Puerta NOT
Puerta AND
La salida de una puerta AND valdrá 1 cuando las entradas valgan simultáneamente 1, es decir,
cuando estén cerradas a la vez. En el siguiente gráfico puedes ver el comportamiento de una
puerta AND:
Puerta OR
La salida de una puerta OR valdrá 1 cuando al menos una de las entradas valga 1.
Tabla de verdad, símil eléctrico y
representación europea y americana de la
puerta OR
Puerta NOT
La salida de una puerta NOT será la negación o el complementario de su entrada.
El resto de puertas lógicas (NOR, NAND, XOR y XNOR) se obtienen como combinación de las
puertas básicas.
El lenguaje en plano de funciones utiliza, además de las puertas lógicas antes mencionadas, unas
funciones especiales que establecen condiciones de temporización, conteo, comparadores, etc., y
que ayudan a definir la lógica de la automatización.
Ejemplo
Los lenguajes de programación, ya sean en PC o en PLC, se dividen en lenguajes de bajo nivel (si están
muy cercanos al microprocesador) o de alto nivel (más cercanos a la expresión escrita habitual
utilizada por el usuario).
Para definir el lenguaje de alto nivel, empecemos por definir en primer lugar el lenguaje de bajo nivel.
Definición
Observa la siguiente tabla donde se hace una clasificación de los lenguajes de programación en
función de si son de alto o bajo nivel:
3.1 Introducción
Los bloques de funciones son los elementos que componen el lenguaje FBD, existiendo también
funciones. Veamos cuáles son las diferencias entre ambos.
Definición
Función
Se trata de una relación lógica combinacional que genera una salida al aplicar dicha relación
sobre las entradas. El valor de la salida solo depende del valor de las entradas (elemento
combinacional).
Bloque de función o bloque funcional
Representa un conjunto de operaciones lógicas aplicadas sobre las entradas y sobre una
variable estática (memoria) que genera unas salidas determinadas. Se trata, por tanto, de un
elemento secuencial.
Las operaciones lógicas contenidas en un bloque son, en realidad, una función. Por ello, se dice que
cuando se ejecuta un bloque, este está realizando una llamada a esa función. En el siguiente esquema
tienes la estructura de un programa en lenguaje FBD donde puedes ver cómo se producen las
llamadas de unos elementos a otros:
Secuencia de llamadas en un programa en
lenguaje FBD
Así pues, un programa puede hacer llamadas a funciones o a un bloque de funciones. Cada función
puede llamar a otra función; y los bloques funcionales pueden invocar a la función contenida en dicho
bloque o hacer una llamada a otro bloque funcional.
A la hora de programar los bloques funcionales, debes tener en cuenta la estructura que ves a
continuación en el siguiente esquema:
En este esquema puedes observar que, además de la asignación de valores iniciales de las variables
que intervienen en el bloque, se producen las llamadas a otros bloques funcionales. Este conjunto de
operaciones relativas a la asignación de valores iniciales y la llamada a otro bloque se denomina
instanciación del bloque funcional.
Existen una serie de bloques funcionales básicos con determinadas funciones que son muy útiles en la
programación. Estos bloques básicos se enumeran a continuación:
Biestables: SR, RS
Mediante estos bloques se genera la siguiente lógica secuencial:
Actividad de aprendizaje 6
A continuación, realizarás una actividad en la que se te pedirá que elijas cuál es el bloque
funcional básico más adecuado para un proceso simple.
Pues bien, este bloque puede utilizarse para realizar más operaciones al expandir sus entradas y
salidas hacia otros bloques.
Ejemplo de bloque de función expandido
La variable de entrada “Integer 2” del bloque, su salida “OutputRegister” y la salida de un nuevo bloque
BOR se usan como variables de entrada de un nuevo bloque MUL, obteniéndose un resultado
almacenado en la variable “OutputRegister2”.
De esta forma, mediante la expansión del bloque ADD se han añadido nuevos bloques a partir de él.
Por tanto, las posibilidades que ofrece la programación en bloques de funciones FBD son numerosas,
permitiendo añadir tantos bloques como operaciones sean necesarias en la programación.
Las instrucciones de los bloques de funciones permiten realizar operaciones tanto de tipo lógico
(operaciones con bits) como operaciones matemáticas.
Las instrucciones de tipo lógico son aquellas que realizan las operaciones del álgebra de Boole,
distinguiéndose las instrucciones BAND, BOR, BXOR y BNOT. Realizan las operaciones lógicas
correspondientes a los operadores lógicos AND, OR, XOR y NOT. En el siguiente esquema puedes ver
un ejemplo:
Las instrucciones de tipo matemático realizan las operaciones matemáticas básicas MUL, DIV y ADD.
Puedes ver un ejemplo en el siguiente esquema:
A partir de estas instrucciones pueden crearse instrucciones más complejas, ya que las entradas
pueden ser múltiples en cada bloque y los bloques se pueden entrelazar, creando instrucciones
personalizadas integradas en bloques de función.
UA 2: Lenguajes y programas en los autómatas programables
4. Estructuras de programación
Es tarea del programador en Automatizaciones 4.0, S. L., decidir la estructura que va a presentar
el programa de control. En general, se dividirá el programa en tareas, cada una de las cuales
será ejecutada por un programa concreto, estando su ejecución coordinada por la CPU según el
programa de control.
Además, la programación de estas tareas presentará la estructura de programación lineal o
estructurada, en función de la complejidad de dichas tareas.
4.1 Introducción
En primer lugar, hay que definir los siguientes conceptos:
Definición
Tarea
Conjunto de instrucciones que se ejecutan para que, a partir de ciertas variables de entrada, se
obtengan ciertas variables de salida.
Estructura de programa en monotarea
Un programa estructurado en monotarea contiene una tarea que ejecuta todas las operaciones
del programa.
Estructura de programa en multitarea
Un programa estructurado en multitarea contiene diferentes tareas, ejecutando cada una de
estas una parte del programa. Por tanto, el programa se divide en distintos subconjuntos o
tareas aisladas, que corresponderán a partes específicas del proceso programado.
Programación lineal
Programación estructurada
La programación lineal se basa en organizar las instrucciones del programa según una secuencia
lineal, desde la primera hasta la última. Por tanto, el programa no efectúa saltos ni ejecuta subrutinas
que obligan a interrumpir la secuencia lineal.
Generalmente, la programación lineal se utiliza para programar tareas no muy complejas que pueden
estructurarse de manera lineal y secuencial.
Por el contrario, cuando tenemos tareas complejas, estas precisan otro tipo de estructura de
programación que se denomina estructurada.
En la programación estructurada, el programa se divide en partes o bloques de ejecución, de manera
que estos se ejecutarán solo cuando se produzca alguna condición o se active alguna señal. Para
introducir estas condiciones se utilizarán instrucciones específicas.
Estas instrucciones pueden ser de dos tipos:
En una programación estructurada la tarea a programar se divide en bloques que ejecutan subtareas y
que son llamados durante la ejecución del programa principal desde algún punto de este.
Estos bloques que realizan tareas específicas pueden agruparse si dichas tareas son del mismo tipo,
optimizándose los tiempos de procesamiento. De esta manera, pueden ejecutarse simultáneamente
bloques que ejecutan tareas del mismo tipo mediante multiprocesadores.
Un tipo de programación estructurada es la programación modular. Se trata de una programación en
la que la división de la tarea se hace en módulos independientes entre sí, cuya ejecución está
organizada desde un módulo raíz, que básicamente contiene las llamadas, condicionales o no, a los
diferentes módulos de división.
Otro tipo de programación estructurada es aquella en que el programa principal ejecuta una serie de
instrucciones, pero, a su vez, puede hacer llamadas a determinadas subrutinas que contienen
instrucciones específicas. De este modo, se ejecuta el programa, “dando saltos” desde el programa
principal hacia las distintas subrutinas y viceversa.
Resulta de gran utilidad la programación estructurada para abordar programas complejos, ya que
estos pueden dividirse en tareas más sencillas, presentando así el programa una estructura en árbol.
Actividad de aprendizaje 7
b) Mediante un programa estructurado, ya que las acciones de los motores son idénticas. Se
producirán llamadas al bloque de accionamiento de motores, particularizando en cada
llamada el tiempo de duración del encendido.
En estructuras monotarea, el programa o tarea única que se ejecuta periódicamente de forma cíclica
es un programa lineal. Si el programa principal es capaz de acceder a subprogramas o módulos, con
intercambio o no de variables, se dice que está estructurado.
La programación multitarea se utiliza cuando se quieren representar procesos más complejos. Estos se
dividirán en tareas, cada una de las cuales se programarán mediante una programación lineal o
estructurada. Cada tarea constituye una entidad de programación completa.
Los métodos de planificación utilizados son el prioritario y el de gestión de tiempo. En el método
prioritario, cada tarea tiene asignada una prioridad y es el microprocesador el que va a seleccionar el
orden de ejecución de las tareas según esta prioridad.
El método de gestión de tiempo o tiempo compartido (time sharing) consiste en asignar unidades de
tiempo a cada tarea. En este método, el microprocesador va a ejecutar las tareas según las
asignaciones de tiempo de cada una de ellas y si existiera simultaneidad entre algunas de ellas,
deberá resolver según las prioridades que se hubieran definido.
4.5 Tareas rápidas e interrupciones
Cuando se están tratando procesos que precisan tiempos de respuesta muy exigentes, no se puede
depender del tiempo de ciclo de scan del PLC. En estos casos, es preciso trabajar con tareas de
interrupción.
En un ciclo de scan de un PLC se realiza una lectura de entradas, posteriormente se ejecuta el
programa de control y, por último, se actualizan las salidas. Si los procesos que se van a automatizar
requieren acciones muy rápidas, puede ser que el ciclo de scan sea una mala opción para ejecutar
estas acciones y que, por tanto, sea necesario ejecutar alguna orden sin esperar a que se actualicen las
salidas en el ciclo de scan.
Para esto se utilizan las tareas de interrupción.
De nición
Tareas de interrupción
Se trata de tareas que interrumpen el ciclo de scan durante un pequeño instante de tiempo,
durante el cual se ejecuta una subrutina que una vez ejecutada hará que se reanude la
ejecución del ciclo de scan justo en el momento en que se interrumpió.
Las tareas de interrupción pueden invocarse desde el programa principal por tres motivos:
1 Por entrada
Por entrada
En los autómatas hay entradas especí cas que pueden con gurarse para que cuando sean
activadas, bien por anco ascendente o descendente, ejecute una interrupción (subrutina de
programa).
Un ejemplo es el caso de una cinta transportadora en la que van pasando piezas y justo cuando
pasan por una fotocélula (que estará cableada a la entrada de interrupción) debemos capturar su
posición (justo en ese momento). Al activarse la fotocélula se ejecuta una subrutina que memoriza
la posición. Al ser la entrada de interrupción, es posible registrar la posición en dicho momento.
Actividad de aprendizaje 8
A continuación, realizarás una actividad en la que se te pedirá que decidas si sería necesario
una interrupción de programa con una tarea rápida.
Estás ahora diseñando un programa en el que debes incluir la medición de velocidad de giro
de un motor de velocidad variable. La velocidad va variando constantemente. Es importante,
en instantes determinados no cíclicos, medir esta velocidad que se almacenará en unos
registros. ¿Cómo plantearías la inclusión de estas mediciones en tu programa?
b) Mediante un programa con interrupciones cíclicas que midiera la velocidad del motor
mediante un encoder, en una tarea rápida.
Parámetros formales
Parámetros actuales
Son variables locales que pertenecen al módulo que realiza la llamada y cuyo valor es enviado
al módulo llamado.
Parámetros formales
Son variables locales que pertenecen al módulo llamado, que reciben el valor de los parámetros
actuales del módulo que hace la llamada.
Ejemplo
El módulo “Calcula” tiene dos variables locales (a y b) que son sus parámetros actuales. Dentro de este
módulo se hace una llamada a la función “Suma” cuyos parámetros formales son x e y. Al hacer esta
llamada, los valores de a y b (10 y 20 respectivamente) son transferidos a los parámetros formales, de
manera que la función “Suma” ejecuta: 10 + 20 y este resultado lo almacena en “s”. Finalmente el valor
de “s” es devuelto al módulo que efectuó la llamada.
4.7 Programación de procesadores periféricos inteligentes
En algunas aplicaciones es necesario programar ciertos módulos especiales que ejecutarán
operaciones de manera autónoma. Por ello, en Automatizaciones 4.0, S. L., emplean módulos
inteligentes en estas situaciones, los cuales realizan funciones como: proceso de regulación,
control de ejes, gestión de datos y gestión de comunicaciones.
Para determinadas tareas que son complejas para ser realizadas por una CPU se crean unos módulos
específicos inteligentes. Estos módulos se construyen a partir de un microprocesador y aseguran que
se realicen ciertas funciones que de otro modo no serían posibles.
Entre estos módulos especiales e inteligentes, ya que realizan ciertas funciones de forma autónoma,
se encuentran los siguientes:
Unidades de comunicación
UA 2: Lenguajes y programas en los autómatas programables
Los autómatas S7-300, S7-1200 y S7-1500 son una marca registrada de Siemens. La evolución de los
diferentes autómatas de esta marca ha sido en paralelo con el incremento del uso de las tecnologías de la
información y de las redes de comunicaciones. Del mismo modo, otras marcas como Schneider, Omron o
Allen Bradley también han ido modernizándose en los últimos años, mejorando la velocidad de sus
procesadores e incrementando las capacidades de comunicación.
Del mismo modo, el entorno de programación ha evolucionado, adaptando nuevas funcionalidades y mayor
practicidad.
El STEP-7 era el entorno de programación en el ámbito industrial para los autómatas de Siemens, hasta que
con la aparición del PLC S7-1200 la marca lanzó un nuevo software denominado TIA PORTAL.
Este software constituye una ayuda para la implantación de proyectos de automatización en todas sus fases,
y pueden resumirse en las siguientes:
Escribir un programa
A la hora de programar, habrá que tener en cuenta la estructura del programa que vamos a escribir, es decir,
si vamos a realizar una programación lineal o estructurada. Y en función de esto, se definirán una serie de
bloques que se analizan en el Apartado 2.5.4.
Nota
Los lenguajes de programación que soporta TIA PORTAL son los siguientes:
En el entorno de TIA PORTAL los primeros pasos que se deben ejecutar son los de configuración del PLC
que vamos a programar, identificando los posibles módulos adicionales de entrada o salida que hubiera y
crear un proyecto que estará asociado a la configuración de hardware antes citada.
Una vez creada esta configuración de hardware y el nuevo proyecto, nos aparecerá una pantalla como la
mostrada en la figura siguiente:
Vista topológica
Vista de redes
Vista de dispositivos
En la vista de dispositivos se debe configurar el hardware completo, mientras que la vista de redes se
emplea para configurar las redes de comunicación industrial.
En la vista topológica se aprecian todos los componentes hardware del proyecto. En esta ventana también
consta la información sobre los módulos dispuestos en el proyecto desde la vista general de dispositivos (7).
En la parte inferior aparecen las propiedades (4) de los dispositivos que se seleccionen en la ventana
superior de hardware. Aquí se deben indicar las direcciones de red o también consultar las direcciones que
tiene cada tarjeta de E/S, y otras características.
A la derecha se encuentra el catálogo de hardware (3) y, abajo (5), la información sobre el dispositivo
seleccionado en el catálogo. Aquí es muy importante poder ver la versión del dispositivo y utilizar para ello
el desplazamiento de la ventana (scroll).
Cada vez que se desee cargar en el PLC la configuración hardware o software, se debe pulsar en el icono de
Cargar en dispositivo que aparece en la barra de herramientas superior.
Video
Puedes visualizar un vídeo donde se muestran los primeros pasos que dar en la utilización de TIA
PORTAL en este enlace:
En el siguiente esquema puedes observar la ventana que aparece cuando se va a transmitir el programa al
PLC. Los pasos que hay que seguir son:
1
Seleccionar el tipo de interfaz PG/PC.
2
Indicar la interfaz utilizada. Si está abierto el simulador, se debe utilizar la interfaz del
simulador como indica la pantalla. Si hay un PLC real, se selecciona en la interfaz el que se
vaya a utilizar: MPI, Profibus o Profinet.
3
Si hubiera varios Slot en el PLC para comunicar, habría que indicarle, en la casilla Conexión
con lnterfaz/subred, en qué Slot está conectado.
4
Iniciar búsqueda.
5
Cuando se haya encontrado el PLC se debe cargar. Puede tardar un instante desde que
termina la búsqueda hasta que se activa la casilla Cargar.
La carga sobre el PLC comenzará de inmediato y saldrá la siguiente pantalla que se muestra a continuación,
que hay que aceptar pulsando Cargar.
Si es necesario (en el caso de hacer redes de comunicación), se deberán dar direcciones a los diferentes
dispositivos del proyecto. Para ello, se debe cliquear el PLC o dispositivo que se desee direccionar y abajo,
en las propiedades, buscar la interfaz que se va a usar para cambiar su dirección. También se puede
cliquear en la interfaz de la Vista de dispositivos y, abajo, saldrán las propiedades de la interfaz en las que
cambiar la dirección.
Puedes ver como el PLC seleccionado dispone de una interfaz para realizar dos tipos de comunicación:
Ethernet o Profibus. Si pinchas sobre el conector Profibus, en las propiedades aparecen las opciones de
Profibus. Lo mismo si seleccionas el conector de Ethernet.
Puedes observar también cómo en la vista general de dispositivos se tiene acceso a las direcciones de los
dispositivos de entrada y salida.
Ahora ya estás en disposición de poder trabajar con el PLC para realizar su programación.
Actividad de aprendizaje 9
A continuación, realizarás una actividad en la que se te pedirá que indiques cuál es el orden que
debe seguirse para cargar o transferir el programa de control desde el PC al PLC.
El PLC S7-1500 es el autómata más reciente creado por Siemens. Lanzado comercialmente en el año 2013,
viene a sustituir a los anteriores. Supone una revolución no solo en prestaciones, sino también en su aspecto
exterior.
Dispone de una pequeña pantalla desde la que se puede obtener información importante sin necesidad de
utilizar ningún software.
En la siguiente imagen se muestra el PLC 1516-3 PN/DP. Otra de sus mejoras es todo lo referente a las
redes de comunicación, tan relevante en la actualidad. Su formato de programación también cuenta con
mejoras evidentes tendentes a la simpli cación y la estandarización.
En cuanto a la arquitectura interna, sus elementos siguen la estructura de todos los demás autómatas de la
serie 7. Puedes ver esta arquitectura en el siguiente esquema:
5.3 Direccionamiento
El equipo de programadores de Automatizaciones 4.0, S. L., realiza el proceso de asignación de
direcciones a las variables en una tabla de asignación. De esta manera, cada variable ocupa un
espacio determinado en la memoria (dependiendo del tipo de dato) y una posición determinada. Esto
permitirá que se gestione la memoria de manera eficiente y que puedan ser localizadas las variables
por la CPU, cuando esta haga uso de ellas.
La CPU del autómata dispone de áreas de memoria para que los datos puedan ser localizados y
procesados según el programa de control. Esta memoria de datos se divide en área de datos y objetos. Su
estructura es la siguiente:
Memoria de datos
Área de datos
Memoria de variables
Objetos
Acumuladores
Contadores
Temporizadores
Marcas
Todos estos datos están representados por variables que ocupan un tamaño de memoria determinado en
función del tamaño del dato. Por ello, se distinguen los siguientes tipos de variables:
BYTE.
PALABRA
DOBLE PALABRA
BYTE
Una variable de tipo byte que almacena un dato tiene un rango de valores entre 0 y 255. Esto es así
porque un byte lo componen 8 bits, por tanto, las posibilidades de números distintos a representar con
esos 8 bits son 28= 256. Eso supone un rango de valores entre el 0 y 255.
PALABRA
Una variable de tipo palabra que almacena un dato tiene un rango de valores entre 0 y 65.535. Esto es
así porque una palabra la componen 2 bytes, por tanto, las posibilidades las ofrecen 16 bits. Los
números distintos a representar con esos 16 bits son 216= 65.536. Eso supone un rango de valores entre
el 0 y 65.535.
DOBLE PALABRA
Una variable de tipo doble palabra que almacena un dato tiene un rango de valores entre 0 y
4.294.967.295. Esto es así porque una palabra la componen 2 palabras (4 bytes), por tanto, las
posibilidades las ofrecen 32 bits. Los números distintos a representar con esos 32 bits son 232=
4.294.967.296. Eso supone un rango de valores entre el 0 y 4.294.967.295.
Tamaño ocupado en memoria por variables de tipo byte, palabra y doble palabra
Nota
Los datos de tipo entero se denominan de distinta manera en función del tamaño del dato. En el
entorno de TIA PORTAL se utilizan los siguientes:
Para acceder a los datos en las áreas de memoria de la CPU, estos deben tener una dirección unívoca. Para
direccionar estos datos, se utilizan dos tipos de direccionamiento: directo e indirecto.
Antes de explicar estos conceptos, debes saber qué es un puntero y para qué se utiliza en un
direccionamiento.
Definición
Puntero
Es una variable que contiene la dirección de memoria de otra variable. Por tanto, el puntero “apunta”
hacia una variable, no almacena el valor de esa variable.
Los tipos de direccionamiento son:
Directo
El direccionamiento directo está orientado principalmente a objetos. También se utiliza para direccionar
temporizadores, contadores, acumuladores y contadores rápidos.
En este tipo de direccionamiento en una variable se almacena el dato que queremos conservar.
Por ejemplo, la variable direccionada como I2.5 es del tipo bit. Almacenará los estados de esa variable,
que serán 0 o 1. La representación significa lo siguiente:
I: variable de entrada.
2: dirección del byte.
5: bit número 5 del byte direccionado como 2.
Por tanto, la variable direccionada como I2.5 almacena el valor de dicha variable (0 o 1).
Indirecto
Este direccionamiento está principalmente dirigido a direccionar datos del área de datos, así como los
valores actuales de temporizadores y contadores.
En este tipo de direccionamiento, al contrario que en el direccionamiento directo, almacenamos la
dirección de la variable y no el valor de la variable. Para almacenar la dirección de la variable se utiliza
un puntero.
5.4 Estructura de un programa y módulos de S7-1500
Los programas complejos suelen dividirse en tareas más sencillas. En Automatizaciones 4.0, S. L.,
utilizan la programación estructurada para desarrollar programas divididos en bloques. Desde el
bloque principal se producen llamadas a otros bloques que ejecutan tareas especí cas.
1
Es el bloque de programación principal. Aquí se escribe el programa de control que hará
llamada a otros bloques en distintos puntos. Existen de varios tipos:
2
Son bloques que son llamados para ejecutar una tarea especí ca. Se caracterizan por que
cuando se ejecuta el programa contenido en el FC, los resultados obtenidos no se
almacenan, se pierden. Esto es así, porque estos datos se almacenan de manera local y los
bloques FC no disponen de memoria. La única manera de almacenar los datos es
asignándolos a un bloque de datos global.
2. CPU
3. Módulos de periferia
Los módulos a destacar en el autómata S7 1500 son aquellos que permiten las comunicaciones con el resto
de dispositivos, así como aquellos que amplían las entradas y salidas disponibles (analógicas y digitales) y
módulos tecnológicos de distintas aplicaciones. En la siguiente tabla, se muestran los detalles de estos
módulos:
Componente Función
Módulos de un S7 1500
Las operaciones combinacionales son aquellas cuyo resultado solo depende del estado de las variables de
entrada. Dentro de las operaciones lógicas con bits, se distinguen las siguientes:
Haz clic para conocer cuáles son las operaciones lógicas combinacionales con bits
1 2 3
4 5 6
7 8 9
10 11
Video
Puedes ver un vídeo con los detalles de estas operaciones lógicas en el siguiente enlace:
Las operaciones de memoria son aquellas que se realizan sobre variables que no se corresponden con
entradas o salidas físicas del autómata, sino con variables que almacenan valores intermedios.
Son variables internas y su papel es fundamental para realizar determinadas operaciones.
Representación de una operación con
memoria en lenguaje de contactos
Significa que si se dan las condiciones que establece esa función lógica, entonces se almacenará un 1 en la
variable M.0.
Posteriormente en el programa puedes utilizar esta variable M.0 como condición de entrada para que se
activen otras salidas.
Las operaciones de tiempo son aquellas que permiten que el tiempo sea la variable fundamental para que
se activen o desactiven ciertas variables de salida. El elemento que permite jugar con el tiempo es el
temporizador. Existen tres tipos de temporizadores:
Las operaciones que realizan los contadores son tales que permiten el conteo de ciertos eventos que se
suceden repetidamente. Esta operación de conteo puede ser ascendente (cuenta desde el valor 0) o
descendente (cuenta desde el valor de conteo prefijado hasta el valor 0). Por ello, se distinguen dos
contadores básicos:
Contador ascendente (CTU)
Se trata de un contador que activa la salida cuando se ha realizado un conteo de entrada igual a un
valor límite PV.
Se distinguen las siguientes entradas:
CU: corresponde a la variable que debe ser contada en sus sucesivas activaciones.
R: entrada que, al ser activada, pondrá a cero el contador.
PV: valor límite de conteo.
Q: salida del contador que se activará una vez que el conteo alcance el valor límite.
CV: cantidad acumulada de conteo en cada instante.
CD: corresponde a la variable que debe ser contada en sus sucesivas activaciones.
L: entrada que, al ser activada, pondrá al valor de inicio (PV) el contador.
PV: valor límite de conteo.
Q: salida del contador que se activará una vez que el conteo alcance el valor límite.
CV: cantidad acumulada de conteo en cada instante.
Observa que en este contador, a diferencia del contador ascendente, el valor inicial de conteo es el
correspondiente al valor límite y la cuenta parte desde este valor hasta cero en cuenta descendente.
Ejemplo
Actividad colaborativa 2
En esta actividad vas a realizar un pequeño programa que ejecutará unas tareas de un proceso. El
lenguaje utilizado será el lenguaje de contactos. Se utilizará un contador ascendente CTU y un
temporizador de pulso TP.
Se trata de una cinta transportadora accionada por un motor M que traslada piezas iguales. La cinta
se acciona con un pulsador P1 y se para con un pulsador P2. Existe un sensor S que detecta la
proximidad de cada pieza en ese punto y va enviando esa información a un contador. Cuando se
cuentan 20 piezas, se activa un motor M1 durante 10 segundos y comienza otro proceso.
Con la ayuda de otros compañeros/as, diseña el programa que ejecuta estas acciones.
Para realizar las Actividades colaborativas debes acceder a la página principal del curso, allí
encontrarás la información necesaria para realizarla. Podrás identificar las Actividades
colaborativas por la numeración correspondiente.
Las instrucciones de comparación son aquellas que se utilizan para comparar valores de dos datos del
mismo tipo. Si el resultado de la operación de comparación es verdadero, se genera una salida de valor 1.
Se distinguen varios tipos de instrucciones de comparación, en función de la operación que se realiza y el
tipo de datos al que se le efectúa dicha operación.
Las operaciones aritméticas son operaciones matemáticas entre variables de entrada que arrojan un
resultado, almacenado en una variable de salida. En Automatizaciones 4.0, S. L., se usan estos
operadores en todas las operaciones matemáticas que requiere el desarrollo del programa de
usuario.
Las operaciones aritméticas son efectuadas por una serie de operadores matemáticos básicos como suma,
resta, multiplicación y división.
Además de las instrucciones matemáticas básicas, en el entorno TIA PORTAL se encuentran otros
operadores de tipo matemático más avanzados, para que se puedan así programar operaciones más
complejas. Entre estos operadores se hallan los siguientes:
CALCULATE: calcular
INC: incrementar
DEC: decrementar
Los bloques de programación pueden llamarse entre ellos. En esta relación existen tres elementos:
El bloque que hace la llamada
Supongamos que el bloque “A” hace una llamada al bloque “B” para realizar una operación específica. En el
bloque “B” se ejecutarán una serie de instrucciones que arrojarán un resultado “X”. Este resultado “X” se
almacenará en una zona de memoria propia del bloque “B” si este dispone de memoria. Cuando se haga
una segunda llamada al bloque “B”, este conservará el resultado que se obtuvo en la primera llamada.
Sin embargo, si el bloque llamado no dispusiera de memoria, el resultado de la ejecución del bloque “B” no
se almacenaría de manera permanente, de forma que en una segunda llamada el bloque “B” no tiene
almacenado ningún dato.
Recuerda
Los bloques FB conservan los resultados de sus operaciones, puesto que poseen DB de instancia
que son datos locales permanentes.
Los bloques FC no conservan los resultados de sus operaciones, puesto que no poseen ninguna
zona de memoria.
Cuando se utilizan contadores y temporizadores, como estos utilizan DB, es preciso programar en
bloques FB que garanticen el almacenamiento en los DB en las sucesivas llamadas.
Observa que el inicio de las llamadas a otros bloques lo realiza el bloque principal OB. En la imagen puedes
observar cómo el bloque OB puede llamar a bloques FB o FC. Un bloque FB puede llamar a bloques FC,
pero un bloque FC no puede llamar a un FB.
UA 2: Lenguajes y programas en los autómatas programables
Resumen
El análisis de los automatismos conduce a la división de estos sistemas en subsistemas. Los
subsistemas manejan variables discretas, es decir, variables que pueden ser binarias o numéricas. La
relación entre las variables de entrada y de salida en cada subsistema se expresan mediante una
relación lógica.
En la realidad, los procesos son complejos, pero pueden reducirse al nivel de operaciones más
simples, cuyas relaciones entre entradas y salidas puedan definirse con detalle.
El primer paso en el diseño del automatismo es el desarrollo de un esquema lógico que servirá para
desarrollar el programa de control en una fase posterior. Las metodologías empleadas son los
diagramas gráficos GRAFCET, así como la herramienta gráfica GEMMA. Mediante estas técnicas puede
representarse el comportamiento de automatismos complejos. Estos se dividirán en operaciones y
cada una de ellas, en etapas. La secuencia entre etapas será del tipo combinacional o secuencial,
existiendo las condiciones de transición que ligarán unas etapas con otras.
Una vez desarrollado el gráfico de control, es preciso iniciar la segunda fase de desarrollo: la
elaboración del programa. En esta fase deben definirse las variables de entrada y de salida, así como
asignarles una serie de direcciones que harán que la CPU pueda localizarlas en la memoria y operar
con ellas.
El programa de control debe escribirse en el entorno de programación del PLC, donde también debe
configurarse el hardware y asignar un proyecto determinado a esa programación. Finalmente, el
programa debe compilarse y cargarse en el autómata para, posteriormente, ser ejecutado.
Los lenguajes de programación utilizados se dividen en dos grandes grupos: los de tipo gráfico y los
de tipo texto. Aquellos de tipo gráfico suelen ser lenguajes de alto nivel, más entendibles por el
usuario, aunque con algunas limitaciones. Estos lenguajes gráficos utilizan operadores que ayudan en
la definición de las instrucciones del programa, tales como operadores lógicos, operadores de
combinación, contadores, temporizadores, etc.
La programación del tipo estructurado ayuda a desarrollar programas complejos que, de esta manera,
pueden dividirse en bloques más sencillos que pueden invocarse desde otros bloques de
programación. Un bloque de programación principal puede ser interrumpido por una parada de
emergencia, un fallo en el sistema o simplemente porque en un momento determinado de la
ejecución del programa se hace una llamada a otro bloque que ejecutará una subrutina o tarea
específica.
Se definen, asimismo, los bloques de datos que son accesibles por determinados bloques de
programación o de forma global, constituyéndose como elementos de memoria que conservan los
resultados de las operaciones que se producen en cada bloque, cuando han sido llamados.