Parte 4b - Automatas Programables S7-1200
Parte 4b - Automatas Programables S7-1200
Parte 4b - Automatas Programables S7-1200
Térmicas y de Fluidos
2015
Autómatas Programables
Siemens S7-1200
Fuente de alimentación PM con entrada 120/230 V AC, 50 Hz/60 Hz, 1.2 A/0.7 A y
salida 24 V DC/2.5 A.
Módulos de señal SM para entradas y salidas digitales y analógicas (Con las CPU
1212C se pueden utilizar como máx. 2 SM y con las 1214C como máx. 8 SM.)
Compact Switch Module CSM con cuatro conectores RJ45 de 10/100 Mbits/s.
Signal boards SB para agregar entradas/salidas analógicas o digitales sin modificar las
dimensiones de la CPU. (Los signal boards se pueden utilizar con las CPU
1211C/1212C y 1214C.
Toda CPU ofrece protección por contraseña que permite configurar el acceso a sus
funciones.
Es posible utilizar la "protección de know-how" para ocultar el código de un bloque
específico.
① Conexión de alimentación.
En las propiedades de la CPU se puede configurar cómo debe arrancar tras desconectar
y conectar la alimentación, hay tres tipos:
Para configurar los parámetros de arranque de la CPU del proyecto actual, haga doble
clic en "CPU", "Propiedades", "General", seleccione "Arranque".
Windows 7
1. Desde el “Panel de control", abrir "Ver estado y tareas de red" y “Cambiar
configuración del adaptador” seleccionar las " Propiedades" de la conexión de área
Local.
(Inicio Panel de control Ver estado y tareas de red Cambiar configuración del
adaptador Conexión de área local Propiedades)
Windows XP
1. Desde el "Panel de control", abrir "Conexiones de red" y seleccionar las
"(Propiedades)" de la conexión de área Local.
4. Para mostrar el icono de la conexión de área local dejar activadas las pestañas de la
siguiente imagen (recuadro rojo).
5. Para ver las propiedades y la IP asignada, pulsar en el icono del escritorio según
imagen. Aparecerá la siguiente ventana, vemos como hemos configurado la IP.
14 Entradas Digitales
- Tipo: Sumidero/Fuente
- Tensión nominal: 24 VDC a 4 mA
10 Salidas Digitales
- Tipo: Relé
- Rango de voltaje : 5 a 30 VDC o 5 a 250 VAC
- Corriente máxima: 2.0 A
- Tipo: Fuente
- Rango de voltaje : 20.4 a 28.8 VDC
- Corriente máxima: 0.5 A
2 Entradas Analógicas
- Tipo: Tensión (unipolares)
- Rango: 0 a 10 V
- Resolución: 10 bits
Para el recuento de eventos de mayor rapidez que la velocidad de ejecución del OB:
El S7-1200 soporta hasta 6 contadores de alta velocidad para el control preciso de
encoders incrementales, conteo de frecuencia o conteo de eventos del proceso de alta
velocidad. Algunas de las HSCs le permiten elegir entre las Entradas integradas de la CPU o
de las Entradas de una Signal Board.
SERVIDOR WEB
Para acceder a la información acerca y datos de proceso de la CPU.
Páginas Web estándar se incluyen accesibles desde un PC a través de cualquier
navegador Web.
Apoyo para la creación de páginas definidas por el usuario Web que pueden acceder a
datos de la CPU.
El desarrollo de estas páginas se puede hacer usando las herramientas estándar de
edición HTML.
CONTROL DE MOVIMIENTO
La CPU ofrece funciones de control de movimiento para el uso de motores paso a paso y
servomotores con interfaz por impulsos. Las funciones de control de movimiento controlan y
monitorizan los accionamientos.
El objeto tecnológico "Eje" configura los datos mecánicos del accionamiento, así como
su interfaz, sus parámetros dinámicos y otras propiedades.
Las salidas de dirección e impulso de la CPU deben configurarse para controlar el
accionamiento.
El programa de usuario utiliza las instrucciones de Motion Control para controlar el eje
e iniciar las tareas de desplazamiento.
Además de las funciones online de la CPU, hay funciones de puesta en marcha y
diagnóstico adicionales para el control de movimiento.
CONTROL PID
ONLINE Y DIAGNÓSTICO
La CPU soporta un búfer de diagnóstico que contiene una entrada para cada evento de
diagnóstico. Toda entrada incluye la fecha y hora del evento, así como su categoría y
descripción. Las entradas se visualizan en orden cronológico. El evento más reciente aparece
en primer lugar. Estando conectada la alimentación de la CPU, los 50 eventos más recientes
están disponibles en este búfer. Cuando se llena el búfer, un evento nuevo reemplaza al evento
más antiguo. Cuando se corta la alimentación, se almacenan los diez eventos más recientes.
3. PROGRAMA DE USUARIO
3.1. EJECUCIÓN DEL PROGRAMA
La ejecución del programa en un PLC se realiza de forma cíclica según la siguiente
secuencia:
1. En el primer paso se transfiere el estado desde la imagen de proceso de las salidas (IPS)
a las salidas y estas se conectan o desconectan.
El tiempo que requiere el procesador para esta secuencia se denomina tiempo de ciclo, y
depende de la cantidad y el tipo de instrucciones, así como del rendimiento del procesador.
En modo online-diagnostico en el TIA Portal podemos ver el tiempo de ciclo, Para ver el
uso de memoria de la CPU del proyecto actual, haga doble clic en "Online y diagnóstico",
expanda "Diagnóstico" y seleccione "Tiempo de ciclo".
La ejecución del programa usuario comienza con uno o varios bloques de organización
(OBs) de arranque que se ejecutan una vez al cambiar a estado operativo RUN, seguidos de
uno o varios OBs de ciclo que se ejecutan cíclicamente. También es posible asociar un OB a
un evento de alarma que puede ser un evento estándar o de error y que se ejecuta cada vez
que ocurre el evento en cuestión.
Última instrucción
4. Ejecutar tareas internas del sistema operativo.
(Comunicacón, autotest, etc.)
La CPU soporta los siguientes tipos de bloques lógicos que permiten estructurar
eficientemente el programa de usuario:
Los bloques de organización (OBs) definen la estructura del programa. Cada OB
tiene una función determinada. OB1 es el único bloque de ejecución cíclica. Es el que
ejecuta la CPU sin que nadie lo llame.
Los demás OB´s tienen una función determinada. Se ejecutan cuando les corresponda
sin que nadie los llame desde ningún sitio del programa. Tenemos OB´s asociados a
diferentes errores de la CPU, a alarmas, a eventos de arranque predefinidos. No
obstante, también es posible crear OBs con eventos de arranque personalizados.
16 desde OBs de ciclo o de arranque
4 desde OBs de alarma de retardo, alarma cíclica, alarma de proceso, alarma de
error de tiempo o alarma de diagnóstico
FC1
Es posible crear bloques lógicos reutilizables para tareas estándar, tales como el control
de una bomba o motor. También es posible almacenar estos bloques lógicos genéricos
en una librería, de manera que puedan ser utilizados por diferentes aplicaciones o
soluciones.
El programa de usuario puede dividirse en componentes modulares para las tareas
funcionales, facilitando así su comprensión y gestión. Los componentes modulares
ayudan no sólo a estandarizar el diseño del programa, sino que también pueden facilitar
y agilizar la actualización o modificación del código del programa.
La creación de componentes modular simplifica la depuración del programa. Dividiendo
el programa completo en segmentos de programa modulares, es posible comprobar las
funciones de cada bloque lógico a medida que se va desarrollando.
La creación de componentes modulares para las distintas funciones tecnológicas
permite simplificar y reducir el tiempo de puesta en marcha de la aplicación.
Las llamadas de bloque pueden anidarse para crear una estructura más modular. En el
ejemplo siguiente, la profundidad de anidamiento es 4: El OB de ciclo de programa más 3
niveles de llamadas de bloques lógicos.
Duración del pulso (s) 0,1 0,2 0,4 0,5 0,8 1 1,6 2,0
Estos bits pueden utilizarse como bits de control para disparar acciones cíclicas en el
programa de usuario, especialmente si se combinan con instrucciones de detección de flancos.
La CPU inicializa estos bytes cuando el estado operativo cambia de STOP a
ARRANQUE. Los bits de las marcas de ciclo cambian de forma síncrona al reloj de la CPU
durante los estados operativos ARRANQUE y RUN.
Para configurar las Marcas de Sistema de la CPU del proyecto actual, haga doble clic en
"CPU", "Propiedades", "General", seleccione "Marcas de Sistema y ciclo" y active “Bits de
marcas y ciclo”.
Forzado
Símbolo Área de Memoria Descripción Remanente
Permanente
Imagen de proceso de las Se copia de las entradas físicas al inicio
I NO NO
entradas del ciclo
Lectura inmediata de las entradas físicas
I_:P Entradas físicas SI NO
de la CPU, SB y SM
Imagen de proceso de las Se copia de las salidas físicas al inicio del
Q NO NO
salidas ciclo
Lectura inmediata de las salidas físicas de
I_:P Salidas físicas SI NO
la CPU, SB y SM
SI
M Marcas Control y memoria de datos NO
(opcional)
SI
DB Bloque de datos Memoria de datos y de parámetros de FBs NO
(opcional)
En el presente documento vamos a seguir esta Norma IEC 1131-3 según la cual define
tres zonas como mínimo: Entradas (%I), Salidas (%Q) y Marcas (%M).
Los objetos en cada zona pueden ser como mínimo: Bits, Bytes (8 bits), Words (16 Bits) y
Double Words (32 bits).
Ejemplos: %I0.0, %Q1.0, %IB0, %QW1, %MD10.
Norma Alemana:
El autómata SIMATIC S7-1200 también permite programar con la norma alemana.
En la Norma Alemana tenemos tres zonas también: Entradas (%E), Salidas (%A) y
Marcas (%M).
Los mismos objetos: Bits, Bytes (8 bits), Words (16 Bits) y Double Words (32 bits).
Ejemplos: %E0.0, %A1.0, %EB0, %AW1, %MD10.
En el TIA Portal podemos seleccionar cual queremos utilizar.
Estructura de operando
% I 0. 2
Al igual que las entradas y salidas, junto con el identificador de operando necesita de un
parámetro. Éste tiene exactamente la misma estructura que en las entradas y salidas. Por
ejemplo: M2.0.
Consideraciones:
Las marcas se utilizan como la memoria de la calculadora, para guardar resultados
intermedios.
Las marcas se utilizan cuando el resultado intermedio de un segmento debe procesarse
en otros segmentos o para guardar estados sucesivos evaluados.
En PLC's su efecto es similar a los relés o contactores auxiliares utilizados en la técnica
convencional.
Una marca puede utilizarse todas las veces que se desee como contacto NA o NC.
Si se corta la alimentación se pierde el estado de la marca. Para evitar esto existe la
función de “remanencia”.
BYTES
Acceder bytes es similar a bits, pero en este caso solo se utiliza el identificador de
parámetro, seguido de la letra B (byte) más la dirección de byte, así para byte entradas (%IB),
byte salidas (%QB) y byte marcas (%MB). De este modo podemos acceder a distintos bits con
una sola “llamada”:
PALABRAS (WORDS)
En las palabras solo se utiliza el identificador de parámetro, seguido de la letra W (word)
más la dirección de la palabra, así para palabra de entradas (%IW), palabra de salidas (%QW)
y palabra de marcas (%MW).
QW0 QW2
QB0 QB1 QB2 QB3
QW1
I[dirección de byte].[dirección de
Imagen de Bit I0.1
bit]
I proceso de las
entradas Byte, palabra y
I[tamaño][dirección de byte inicial] IB4, IW5 o ID12
doble palabra
I[dirección de byte].[dirección de
Bit I0.1:P
bit]:P
I_:P Entradas físicas
Byte, palabra y I[tamaño][dirección de byte
IB4:P, IW5:P o ID12:P
doble palabra inicial]:P
Q[dirección de byte].[dirección de
Imagen de Bit Q1.1
bit]
Q proceso de las
salidas Byte, palabra y
Q[tamaño][dirección de byte inicial] QB6, QW10 o QD18
doble palabra
Q[dirección de byte].[dirección de
Bit Q0.1:P
bit]:P
Q_:P Salidas físicas
Byte, palabra y Q[tamaño][dirección de byte QB6:P, QW10:P o
doble palabra inicial]:P QD18:P
M[dirección de byte].[dirección de
Bit M0.0
bit]
M Marcas
Byte, palabra y
M[tamaño][dirección de byte inicial] MB20, QW30 o QD40
doble palabra
La CPU asigna la memoria temporal según sea necesario. La CPU asigna la memoria
temporal al bloque lógico cuando éste se inicia (en caso de un OB) o se llama (en caso de una
FC o un FB). La asignación de la memoria temporal a un bloque lógico puede reutilizar las
mismas posiciones de memoria temporal usadas anteriormente por un OB, FC o FB diferente.
La CPU no inicializa la memoria temporal durante la asignación por lo que esta memoria puede
contener un valor cualquiera.
Los bloques de datos se utilizan para almacenar diferentes tipos de datos, incluyendo el
estado intermedio de una operación u otros parámetros de control de FBs, así como
estructuras de datos requeridas para numerosas instrucciones, temporizadores, contadores….
Los bloques de datos que se pueden leer y escribir, se permiten accesos de lectura y
escritura. Los bloques de datos de sólo lectura se permiten sólo los accesos de lectura.
4.5. DIRECCIONAMIENTO
ENTERO
FECHA Y HORA
CARÁCTER Y CADENA
ARRAY
ESTRUCTURA DE DATOS
Se puede utilizar el tipo de datos "Struct" para definir una estructura de datos formada por
otros tipos de datos. El tipo de datos STRUCT puede emplearse para gestionar un grupo de
datos de proceso relacionados como una unidad de datos simple. Se asigna un nombre a un
tipo de datos STRUCT y la estructura de datos interna se declara en el editor de bloques de
datos o un editor de interfaces de bloque.
DATOS PLC
El editor del tipo de datos PLC permite definir estructuras de datos, que pueden usarse varias
veces en el programa. Para crear un tipo de datos PLC abra la rama "Tipos de datos PLC" del
árbol del proyecto y haga doble clic en el elemento "Añadir nuevo tipo de datos". En el tipo de
datos PLC recién creado, haga dos clics individuales para cambiar el nombre predeterminado y
un doble clic para abrir el editor del tipo de datos PLC.
DATOS DE PUNTERO
Los tipos de datos de puntero (Pointer, Any y Variant) pueden utilizarse en tablas de
interfaz de bloque para bloques lógicos FB y FC. El tipo de datos de puntero se puede
seleccionar de las listas desplegables de tipos de datos de interfaz de bloque. El tipo de datos
Variant también se utiliza para parámetros de instrucción.
Para más información consultar el manual: A5E02486683-06 Manual de sistema S7
1200.
5. PROGRAMACIÓN BÁSICA
5.1. LENGUAJES DE PROGRAMACIÓN
Programas de ejemplo:
Los ejemplos utilizando entrada y salidas negadas no tienen equivalente eléctrico. En los
casos anteriores, negando la entrada o la salida, el circuito se comportará de forma contraria,
salvo que neguemos ambas de forma simultánea (doble negación = afirmación).
A B F=Ā
0 0 1
0 1 0
La función AND (Y), implica que deben cumplirse las condiciones simultáneamente para
tener continuidad en la línea del programa. Eléctricamente equivale a disponer de dos
contactos en serie. Pueden utilizarse indistintamente con las entradas o salidas negadas.
El resultado de esta operación es 1 cuando las dos variables valen 1, en caso contrario el
resultado es 0. F=A∙B
A B F=A·B
0 0 0
0 1 0
1 0 0
1 1 1
La función OR (O), implica que basta con que se cumpla una de las condiciones para
tener continuidad en la línea del programa. Eléctricamente equivale a disponer de dos
contactos en paralelo. Pueden utilizarse indistintamente con las entradas o salidas negadas.
El resultado de la suma lógica es 1 cuando una de las dos variables A o B toma el valor
1. La suma lógica no es igual a la suma aritmética. F = A + B
A B F=A+B
0 0 0
0 1 0
1 0 0
1 1 1
Duplicación de salidas:
Con las mismas condiciones de ejecución pueden ponerse múltiples salidas en paralelo,
esto es, una misma condición del programa puede activar varias salidas de forma simultánea.
Nota: una misma condición puede activar más de una salida, no es recomendable utilizar la misma
salida en dos puntos distintos del programa, si se hace se tomará la última programada.
Las funciones AND y OR, así como las salidas en paralelo pueden combinarse.
Programas de ejemplo:
En este caso bastará que sólo una de las entradas, I0.0 ó I0.1 esté
activa para que se active la salida Q0.0.
Por último, para que se active la salida, será necesario que estén
activas la entrada I0.2 y además o bien la I0.0 ó la I0.1 ó ambas a la
vez.
ENCLAVAMIENTOS
Con Instrucciones Lógicas
Podemos utilizar una salida, física o no, de forma similar a como se utilizan los contactos
auxiliares de los contactores o relés para hacer un enclavamiento. De esta forma, bastará con
dar un pulso para activar una salida y con otro pulso, en otra entrada, para desactivarla.
El programa será una traducción casi literal de un circuito eléctrico, utilizando un contacto
de la propia salida en paralelo (función OR) con el pulsador de marcha, y los pulsadores de de
marcha y paro conectados en serie (función AND).
Flipflop de activación/desactivación SR
Esta función realiza el enclavamiento de un bit, activado por una entrada de set (S) y
desactivado por una entrada de reset (R1). Es equivalente al ejemplo anterior, pero resumido
en una única función. En caso de recibir señales simultáneas por ambas entradas, siempre
prevalece el Reset (R1) sobre el Set (S).
Flipflop de desactivación/activación RS
Esta función realiza el enclavamiento de un bit, activado por una entrada de set (S1) y
desactivado por una entrada de reset (R). Es equivalente al ejemplo anterior, pero en caso de
recibir señales simultáneas por ambas entradas, siempre prevalece el Set (S1) sobre el
Reset (R).
Ejemplo: El programa está online, con I0.6 e I0.7 (set y reset) (NA) pulsados se mantiene
activa Q1.1. y Q1.0. El lugar donde va la salida Q1.0 se puede eliminar del programa es
opcional, se puede ponerla si queremos activar otra salida sino la necesitamos no ponemos
nada.
Otros ejemplos:
Circuito eléctrico
S1 Paro (NC) I0.0
S2 Marcha (NA) I0.1
K1 Contactor (Motor) Q0.0
Pulsando en S2 (entrada I0.1),
cerramos el circuito que alimenta
la bobina del contactor K1 (salida
Q0.0), realimentándose mediante
un contacto auxiliar (Q0.0).
Al pulsar el paro S1 (entrada
I0.0) cortamos la alimentación,
desactivándose la bobina del
contactor.
Función SR
Como vemos es como el SET y
RESET pero en una sola
instrucción.
En el esquema anterior tenemos que el pulsador de paro (S1) es un cerrado físico NC,
esto es, en condiciones normales de funcionamiento dará continuidad y cuando se pulse,
interrumpirá el circuito. Como vemos, este contacto se programa utilizando instrucciones
lógicas como ABIERTO, del mismo modo que el pulsador de marcha (S2), que es, sin
embargo, un contacto normalmente abierto NA.
Sin embargo, cuando utilizamos las funciones SR o SET y RESET, utilizamos la entrada
negada de S1, ya que si no, al tratarse de un cerrado físico, nos activaría la entrada de reset,
impidiendo activar el circuito.
No debemos confundir los contactos normalmente cerrados con entradas de programa
negadas. Utilizando instrucciones lógicas (“en serie”) se programará la entrada normal,
mientras que si usamos funciones (“en paralelo”), deberá negarse esta.
Circuito eléctrico
S1 Paro (NC) I0.0
S2 Marcha (NA) I0.1
K1 Contactor (Motor) Q0.0
H1 Piloto Verde Q0.1
H2 Piloto Ámbar Q0.2
Pulsando en S2 (entrada I0.1),
cerramos el circuito que alimenta
la bobina del contactor K1 (Q0.0),
H1 (Q0.1) y H2 (Q0.2)
realimentándose mediante un
contacto auxiliar (Q0.0).
Al pulsar el paro S1 (entrada I0.0)
cortamos la alimentación,
desactivándose la bobina del
contactor.
FLANCOS
Los flancos ponen a ON un bit durante un ciclo de scan (el tiempo que tarda en
completarse el programa), cuando la condición de ejecución (los bits de entrada a la
instrucción) pasan de OFF a ON (flanco ascendente P) o de ON a OFF (flanco descendente N).
Se utilizan cuando queremos dar únicamente un pulso de señal, independientemente del
tiempo que el bit de entrada esté activo.
Ejemplo: El flanco positivo solo se detecta en I0.2 y el negativo solo se detecta I0.4. Hay que
poner las marcas para que funcione y no se pueden utilizar estas marcas de nuevo en el
programa. Para el set deben estar activas I0.0, I0.1, I0.3 y un flanco positivo en I0.2. Para el
reset tenemos I0.4 activa y cuando la quitemos (flanco descendente) hará el reset.
El bit asignado es TRUE cuando se detecta un flanco ascendente (OFF a ON) en el flujo
de corriente que entra a la bobina (RLO), se activa un operando durante un ciclo de programa.
Ejemplo: Si tenemos un flanco en el flujo de corriente a M0.0, se activa Q0.0 con un set y en
I0.4 reset de Q0.0. La marca M0.0 no es una marca de flancos, en su lugar se podría poner
una salida, pero no daría tiempo a ver la activa porque se activa tan solo un ciclo de scan. En
cuanto M0.1 es la marca de flancos para evaluar el flanco.
Nota: La dirección de la marca de los flancos no se puede utilizar más de una vez en el programa,
puesto que, de lo contrario, se sobrescribe el bit de marcas. Esto afecta la evaluación de flancos de
forma que el resultado deja de ser unívoco. El área de memoria de la marca de flancos debe
encontrarse en un bloque de datos (sección 'Static' en un FB) o en el área de marcas.
5.3. TEMPORIZADORES
Disponemos de cuatro tipos de temporizadores:
Impulso TP
Retardo al conectar TON
Retardo al desconectar TOF
Acumulador de tiempo TONR
Los temporizadores no requieren de ninguna zona memoria sino que al insertar cualquier
temporizador CEI automáticamente se genera un DB de instancia individual IEC_Timer_DB
que lo llamamos como queramos, lo normal es utilizar un nombre que nos indique su función
en nuestro programa.
TEMPORIZADOR DE IMPULSO TP
También podemos iniciarlo como una bobina, con la instrucción arrancar temporizador
CEI como impulso con el fin de ahorrar instrucciones. Previamente se debe crear el DB de
instancia del temporizador.
Ejemplo: Funciona igual que el anterior ejemplo.
Ejemplo: Pulsando Marcha (NA) arrancamos el Motor 1 y el Piloto ámbar, pasados los 10
segundos arranca Motor 2 y el Piloto verde, mantenemos el Motor 1 pero se apaga el Piloto
ámbar con el contacto del temporizador (“Tiempo_1”.Q), todo se parará pulsando el paro (NC)
o si tenemos una sobrecarga en el Térmico (NC).
Ejemplo: Pulsando Marcha (NA) arrancamos el Motor 1 y el Piloto verde, estará funcionando
hasta que lo paremos bien pulsando el Paro (NC) o si tenemos una sobrecarga en el
Térmico_1 (NC), en ese momento arranca Motor 2 y el Piloto ámbar. Este segundo motor se
mantendrá arrancado durante 8 segundos siempre y cuando no pulsemos el Paro o se tenga
una sobrecarga en el Térmico_2.
Ejemplo: Acumulador de tiempo si mantenemos a la I0.0 hasta que pasen los diez segundos.
También podemos iniciarlo como una bobina, con la instrucción acumulador de tiempo
con el fin de ahorrar instrucciones. Previamente se debe crear el DB de instancia del
temporizador.
Ejemplo: Acumulador de tiempo si mantenemos a la I0.0 hasta que pasen los diez segundos.
Después es necesario inicializar el temporizador con I0.1.
Ejemplo: Si pulsamos I0.0 temporizamos 15s, si antes de llegar a 10 s pulsamos I0.1 solo
temporiza hasta 10s.
5.4. CONTADORES
Disponemos de tres tipos de contadores:
Contador ascendente CTU
Contador descendente CTD
Contador ascendente-descendente CTUD
Los contadores no requieren de ninguna zona memoria al igual que los temporizadores,
sino que al insertar cualquier contador CEI automáticamente se genera un DB de instancia
individual IEC_Counter_DB que lo llamamos como queramos, lo normal es utilizar un nombre
que nos indique su función en nuestro programa.
Ejemplo: Pulsamos I0.3 para poner el contador CTD a 5, después de 5 impulsos de la entrada
I 0.2 se activa Q 0.1.
Ejemplo: Un recinto tiene un límite de personas, así que se quiere contar las personas que
entran y salen, para el control de acceso se dispone de un torno giratorio (NA) en la entrada
I0.4 y otro a la salida I0.5, cada vez que pase una persona por el torno de entrada un contador
se incrementará, cada vez que salga una persona el contador descuenta una unidad. Cuando
halla 25 o más personas se encenderán un letrero luminoso “Prohibido el paso” Q0.2, si el
recinto está vacío se señaliza con otro luminoso “Vacío” Q0.3. Para poner el contador a cero se
dispone de un reset del contador con un pulsador (NA) I0.6.
5.5. COMPARACIÓN
COMPARADORES CMP
Nota: Hay que tener la precaución de que los dos datos a comparar sean del mismo tipo de datos.
En caso contrario el TIA Portal nos avisará de este conflicto.
5.6. TRANSFERENCIA
COPIAR VALOR (MOV)
La función MOVE es ejecutada cuando tenemos un flanco
ascendente en en la entrada EN, copia un elemento de datos
almacenado en una dirección indicada IN a una dirección diferente
OUT.
IN y OUT soportan los siguientes tipos de datos: SInt, Int, DInt, USInt, UInt, UDInt, Real,
LReal, Byte, Word, DWord, Char, Array, Struct, DTL, Time. Por tanto puede trabajar a: 8 bits,
16 bits o 32 bits.
Se pueden activar varias salidas a la vez.
El valor a introducir puede ser en Decimal (255), Hexadecimal (16#FF), Octal (8#377), Binario
(2#11111111).
Ejemplo: Con I0.0 se activan todas las salidas del byte 0 (QB0), pulsamos I0.1 se transfiere la
información a la palabra MW0. Pulsamos I0.2 tenemos un 0 en QB0 y en MW0, desactivamos
entonces las salidas.
IN1, IN2 SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, constante Entradas de la operación matemática.
OUT SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal Salida de la operación matemática.
SUMAR (ADD)
RESTAR (SUB)
Ejemplo:
INCREMENTAR (INC)
Incrementa un valor de un número entero con o sin signo: Valor IN_OUT +1 = valor IN_OUT
DECREMENTAR (DEC)
Decrementa un valor de un número entero con o sin signo: Valor IN_OUT - 1 = valor IN_OUT
Ejemplo: Si pulsamos I0.0 incrementa en un 1 la doble palabra MD100 tipo entero, en I0.1 la
decrementa en 1 y en I0.2 la ponemos a 0.
Los bloques de función contienen subprogramas que se ejecutan cada vez que un bloque
de función es llamado por otro bloque lógico.
Los bloques de función son bloques lógicos que depositan sus valores de forma
permanente en bloques de datos de instancia, de modo que siguen disponibles tras procesar el
bloque.
Ejemplo instancia: La figura siguiente muestra un OB que llama un FB tres veces, utilizando
un bloque de datos diferente para cada llamada. Esta estructura permite que un FB genérico
controle varios dispositivos similares (p. ej. motores), asignando un bloque de datos instancia
diferente a cada llamada de los distintos dispositivos. Cada DB instancia almacena los datos (p.
ej. velocidad, tiempo de aceleración y tiempo de operación total) de un dispositivo en particular.
La memoria también puede estar disponible para varias instancias como multiinstancia
en un bloque de datos.
TIPOS DE PARAMETROS
Input, Output, InOut y Ret_Val: estos parámetros definen las variables de entrada, las
variables de salida, variables entrada-salida y el valor de retorno del bloque lógico. El
nombre de la variable introducida en este punto se emplea de forma local durante la
ejecución del bloque lógico. Normalmente, no se emplea el nombre de variables
globales en la tabla de variables.
Estáticos (solo FBs): las variables estáticas se utilizan para almacenar resultados
intermedios estáticos en el bloque de datos instancia. Los datos estáticos se retienen
hasta que se sobrescriben, lo cual puede ocurrir después de varios ciclos. Los nombres
de los bloques, los cuales se llaman en este bloque lógico como multiinstancia, también
se almacenan en los datos locales estáticos.
Temp: estos parámetros son variables temporales que se emplean durante la ejecución
del bloque lógico.
Parámetros de bloque que forman la interfaz del bloque para la llamada en el programa:
Nota: Las Funciones FC o Bloques de Función FB con parámetros, que se pueden llamara varias
veces en nuestro programa se les denomina plantillas.
Si se utiliza enclavamiento bien con puertas lógicas o Set y Reset en sus diferentes
formas, la marca o salida a utilizar debe ser un parámetro InOut en la función.
Al contrario que los bloques lógicos, los bloques de datos no contienen instrucciones,
sino que sirven para almacenar datos de usuario.
Por tanto, los bloques de datos contienen datos variables, con los que trabaja el
programa de usuario.
Los bloques de datos globales almacenan datos de usuario utilizables desde todos los
demás bloques.
El tamaño máximo de los bloques de datos varía en función de la CPU. La estructura de
bloques de datos globales puede definirse a discreción.
Algunos ejemplos de aplicación son:
Guardar la información en un sistema de almacenamiento. "¿Dónde está cada
producto?"
Guardar recetas de determinados productos.
Todo bloque de función, toda función o todo bloque de organización puede leer datos de
un bloque de datos global o escribir datos en él. Estos datos se conservan en el bloque de
datos incluso al cerrarlo.
INSTANCIAS INDIVIDUALES
OB1
FC1
Llamada FC1 DB10
Llamada FB10 con
FB10 DB de instancia 1ª
instancia DB10
Motor 1 llamada datos
para el control del
motor 1.
motor 1.
Llamada FB10 con
instancia DB11 DB11
para el control del FB10 DB de instancia 2ª
motor 2. Motor 2
llamada datos
motor 2.
Nota: Algunos comandos como temporizadores y contadores se comportan como bloques de función.
Si son llamados, representan instancias y necesitan un área de memoria asignada, p. ej. en forma de
un bloque de datos de instancia.
MULTIINSTANCIAS
Es posible que, debido al espacio de memoria de las CPU utilizadas, solo quiera o pueda
destinar una cantidad limitada de bloques de datos para datos de instancia.
Si en su programa de usuario, en un bloque de función son llamados otros bloques de
función, temporizadores, contadores, etc. ya existentes, entonces puede llamar a estos otros
bloques de función sin DB de instancia propios (es decir, adicionales).
Seleccione simplemente Multiinstancia en las opciones de llamada:
Autómatas Programables S7-1200 68
Curso 14FP35CF165: Autómatas programables S7-1200 María C. Pérez Cabezas
Notas: Las multiinstancias ofrecen a un bloque de función FB que ha sido llamado la posibilidad de
almacenar sus datos en el bloque de datos de instancia del bloque de función que llama.
El bloque que debe ser siempre un bloque de función FB.
Esto permite concentrar los datos de instancia en un bloque de datos de instancia y aprovechar mejor
el número de DBs disponibles.
Esto debe hacerse siempre que el bloque que llama deba seguir utilizándose como bloque estándar.
Ejemplo de multiinstancia:
OB1
Llamada DB1
FB1
FB1 con DB de
Llamada
multiinstancia Contador 1
instancia Contador 1
para FB1. tipo CTUD.
DB1. como
Aquí están
multiinstancia.
disponibles el
contador 1 y el
Llamada Contador 2
contador 2 como
Contador 2 tipo CTUD.
multiinstancia.
como
multiinstancia.
Ejemplo de multiinstancia:
La figura siguiente muestra cómo varios bloques de función diferentes depositan sus
datos en un bloque invocante. El FB_pieza llama sucesivamente el FB_rejilla, el FB_troquel y el
FB_cinta. Los bloques llamados depositan sus datos en el DB_pieza, que es el bloque de datos
instancia del bloque que llama.
Ejemplo de multiinstancia:
El bloque de función FB_motores llama tres instancias del FB_motor. Las instancias son
"Motor_1", "Motor_2" y "Motor_3". Para cada llamada se utilizan diferentes datos de instancia.
Sin embargo, todos los datos de instancia se almacenan en un único bloque de datos instancia.
Para hacer esta función vamos a utilizar las instrucciones matemáticas y trabajaremos con
enteros:
ADD (sumar), MUL (Multiplicar) y DIV (dividir).
Una vez creada la función Matematica [FC1] vamos a Main (OB1) y la llamamos:
Introducimos las entradas y salidas, después la llamamos otra vez y hacemos lo mismo, es
decir trabajamos dos veces con esta función:
El reultado lo vemos, en la tabla de observación la hemos forzado MW0 a valor 100 y la MW2 a
200.
Creamos otro temporizador TON que lo llamaremos Tempo_OFF y asignamos las consignas
de tiempos a cada temporizador que son las variables declaradas tipo Time.
Introducimos 1 segundo para Tiempo_On, 2 segundos para Tiempor_OFF, I0.0 para activar,
Q0.0 para salida por ejemplo. Así tendremos un reloj de pulsos Q0.0 se activa 1 segundo y
desactivada 2 segundos.
El bloque de función lo hemos llamado una vez, pero podemos llamarlo tantas veces como
queramos, cada vez que lo llamemos se creará un nuevo DB de datos.
Tenemos un proceso idéntico para realizar tres tipos de mezclas de dos productos.
En ese proceso, se hace una mezcla de una cantidad del producto A con otra cantidad de otro
producto B durante un tiempo determinado.
Al accionar un pulsador de inicio de mezcla se abren las dos electroválvulas A y B que dan
paso a los productos y se pone en marcha el mezclador. Según van pasando los tiempos, se
cierra la válvula A, se cierra la válvula B y se para el mezclador.
Entradas Salidas
I0.0 S1 (NA) Selector Mezcla 1 Q0.0 Y1 Válvula A
Para ello necesitamos crear los tres bloques de datos globales DB1, DB2 y DB3.
Después creamos una función Mover_Datos [FC1] cargamos los datos de los temporizadores
de los tres DBs en tres dobles palabras MD100, MD104 y MD108 tipo time de 32 bits.
En el Main [OB1] llamamos a la FC1 y con el pulsador iniciar arrancamos los tres
temporizadores:
Estos detectores se diferencian de los de dos hilos, en que la corriente de excitación del
sensor no pasa a través de la carga, y en la excitación, la caída de tensión del sensor no afecta
a la tensión de la carga. El más frecuente para detectores de CC.
Normalmente se utiliza la construcción PNP, pues en la NPN si se produce un fallo en el
cable de salida del detector hacia la carga, al hacer contacto con el armario eléctrico, activa la
carga sin encontrarse activado el detector.
Autómatas Programables S7-1200 84
Curso 14FP35CF165: Autómatas programables S7-1200 María C. Pérez Cabezas
8. SEÑALES ANALÓGICAS
Las tarjetas analógicas de S7 convierten:
Para las salidas analógicas, un valor digital de 16 bits de la periferia de salidas en una
señal analógica mediante un conversor digital-analógico.
Existen dos parámetros que determinan una entrada o una salida analógica:
El tipo de sonda (en el caso de entradas), o el tipo de actuador (en el caso de salidas),
a conectar (4-20 mA, 0-10 V, etc...).
El autómata S7-1214C integra 2 entradas analógicas, con una resolución de 12 bits (11
bits + signo). Con las siguientes características.
Medidas de intensidad:
Dentro de las medidas de intensidad se suelen utilizar principalmente dos tipos: 0-20 mA.
y 4-20 mA. Las medidas por intensidad es el más utilizado en la lectura analógica, ya que
permite grandes distancias al ser la lectura por corriente, y a la vez es fácil reconocer la rotura
del hilo, ya que por debajo de 4 mA indica el mal funcionamiento del sensor.
Las sondas PT100 se utilizan para la medida de la temperatura en procesos que oscilen
entre 850ºC y –200ºC. Una PT100 es una termo-resistencia que varía su resistividad en función
de la temperatura que exista en contacto con la misma. A través de dos hilos (1 canal del
módulo de entradas analógicas), se hace circular por la PT100 una corriente constante. Otros
dos hilos toman la medida de la resistencia en los extremos de la sonda, con lo que se obtiene
la variación de resistencia, y al ser conocida su linealidad con respecto a la temperatura en los
márgenes anteriormente citados, se obtiene ésta.
SALIDAS ANÁLOGICAS
Salida a tensión +/- 10 V:
Nota: Para otros sensores analógicos o digitales consultar el manual de producto A5E02486683-06
Manual de sistema S7 1200 y manual del sensor correspondiente.
En la compensación interna es posible formar la unión fría en los bornes del módulo de
entradas analógicas. En este caso es necesario llevar los conductores de compensación hasta
el módulo analógico. El sensor de temperatura interno mide la temperatura del módulo y
genera una tensión de compensación adecuada. Con la compensación interna no se obtiene la
misma precisión que con la compensación externa. Es imprescindible conectar correctamente
la polaridad, pues de lo contrario se obtienen considerables resultados erróneos.
SALIDAS ANALÓGICAS
El valor del número en coma flotante indicado está fuera del rango de los números normalizados.
NORMALIZAR
Normaliza el valor de la variable de entrada mapeándola en una escala lineal entre dos
valores comprendida en 0.0 y 1.0.
ESCALAR
La instrucción SCALE_X sirve para escalar el valor de una entrada o salida analógica
entre dos valores (máximo y mínimo). También podríamos escalar cualquier otro registro que
no sea una entrada analógica.
Ejemplo: Queremos controlar el valor de temperatura de una sonda que da 0 Voltios a 0ºC y
10 Voltios a 100ºC y queremos tener en MD80 el valor real de esa temperatura.
Gráficamente se podría representar (caso de 0-10V o 4-20mA): Para el caso de +/-10V (BIPOLAR)
Debe de activarse la alarma de máxima cuando el valor de la temperatura supere los 90ºC.
Debe de activarse la alarma de mínima cuando el valor de la temperatura este por debajo de
40ºC.
El I0.0 es el pulsador de enterado. Al accionarlo se borra la alarma de mínimo y de máximo (Las
alarmas de mínimo o máximo, no volverán a activarse hasta que su valor no suba (mínima) o
baje (máxima) del valor de la consigna y se den de nuevo las condiciones de activación de las
alarmas.