Presentación - Mantener Controladores de Procesos 2
Presentación - Mantener Controladores de Procesos 2
Presentación - Mantener Controladores de Procesos 2
Mantener
Controladores de
Procesos
Cantidad de Módulos y contenido que tendrá curso
Señales
Interfaz Control
Señales Discretas Análogas y
Expert
otras funciones
Conceptos
TEMA 1 Fundamentales
Interfaz Control Expert • Creación de un nuevo proyecto.
• Configuración de hardware.
• Definición de variables y datos.
CREACIÓN DE UN PROYECTO NUEVO
• Su estructura,
• Su formato,
• Una lista de sus atributos y
• Su comportamiento.
• Todas las instancias del tipo de datos
comparten estas propiedades.
• Las familias de tipos de datos se clasifican en
diferentes categorías.
TIPOS DE DATOS ELEMENTALES (EDT)
• Los tipos de datos en formato binario pertenecen a la familia EDT (tipo de datos elementales), que agrupa los
tipos de datos simples en contraposición a los derivados (tablas, estructuras y bloques de funciones).
FORMATO BINARIO
• Un elemento de datos con formato binario se compone de uno o varios bits, cada uno de los cuales está
representado por una de las cifras de base 2 (0 o 1).
• La escala del elemento de datos depende del número de bits que la componen.
EJEMPLO
TIPOS DE DATOS ELEMENTALES (EDT)
• Con signo. En este caso, el bit de rango más alto es el bit con signo:
• 0 indica un valor positivo
• 1 indica un valor negativo
Los tipos enteros permiten representar un valor en diferentes bases. Dichas bases son:
NOTA: En la representación decimal, si el tipo elegido tiene signo, el valor puede ir precedido del
signo + o - (el signo + es opcional).
TIPO ENTERO (INT)
• El tipo Time T# o TIME# se representa mediante un tipo entero doble sin signo (UDINT).
• Días (D)
• Horas (H)
• Minutos (M)
• Segundos (S)
• Milisegundos (MS)
TIPO DE DATOS REAL
• Los tipos de datos en formato real pertenecen a la familia EDT (tipo de datos elementales), que agrupa los
tipos de datos simples en contraposición a los derivados (tablas, estructuras y bloques de funciones).
• Los 32 bits que representan el valor de coma flotante están organizados en tres campos distintos.
Estos son:
• S, el bit de signo que puede tener el valor:
• 0, para un número de coma flotante positivo.
• 1, para un número de coma flotante negativo.
• e, el exponente codificado en un campo de 8 bits (entero en formato binario).
• f, la parte de coma fija codificada en un campo de 23 bits (entero en formato binario).
Representación:
• El valor de la parte de coma fija (mantisa) está entre [0, 1[, y se calcula mediante la fórmula siguiente:
TIPOS DE NÚMEROS QUE SE
PUEDEN REPRESENTAR
Son los números:
• Normalizados
• No normalizados
• De valores infinitos
• Con valores +0 y -0
En esta tabla se recogen los valores de los distintos campos según el tipo de número.
TIPOS DE NÚMEROS QUE SE
PUEDEN REPRESENTAR
• En esta tabla se recoge la fórmula de cálculo del valor del número de coma flotante:
Donde:
• Presentación:
• Presentación:
• Utilizando la fórmula:
TIPOS DE DATOS ELEMENTALES CON
FORMATO DE CADENA DE BITS
La particularidad de este formato es que el conjunto de los bits que lo componen no representa
un valor numérico, sino una combinación de bits separados. Los datos que pertenecen a los tipos
de este formato se pueden representar en tres bases. Estos son:
• Hexadecimal (16#)
• Octal (8#)
• Binario (2#)
Existen tres tipos de datos, con formato de cadena de bits, estos son:
Conceptos
TEMA 2 Fundamentales
• Lenguaje de bloques de funciones
Lenguaje FBD y señales FBD.
discretas • Secuencia de ejecución de los FFB.
• Bloques más utilizados para señales
discretas.
LENGUAJES DE PROGRAMACIÓN
Los lenguajes de programación que pueden ser utilizados, en control expert, son:
• El editor FBD permite la programación gráfica de bloques de funciones de acuerdo con la norma
IEC 61131-3.
Los objetos del lenguaje de programación FBD (diagrama de bloques de funciones) sirven de ayuda para
dividir una sección en varios:
• Conexiones o
• Parámetros reales
• La lógica de la sección se puede comentar por medio de objetos de texto
TAMAÑO DE LA SECCIÓN
• Una sección FBD está compuesta por una ventana con una sola página.
• Esta página tiene un fondo de reticulado. Una unidad de cuadrícula está compuesta por 10
coordenadas. Una unidad de cuadrícula es la distancia mínima posible entre dos objetos de una
sección FBD.
• El lenguaje de programación FBD no está basado en celdas; los objetos están alineados con las
coordenadas.
• Una sección FBD puede configurarse con un número de celdas (coordenadas horizontales y verticales
de la cuadrícula).
• Para obtener una descripción de la descripción de la conformidad del lenguaje de programación FBD
con las normas IEC, consulte Conformidad IEC
FUNCIÓN ELEMENTAL
• Las funciones elementales (EF) no tienen estados internos. Si los valores de entrada son los mismos,
el valor de salida es el de cada ejecución de la función. Por ejemplo, la suma de dos valores siempre
da el mismo resultado.
• Una función elemental se representa de forma gráfica por medio de un bloque con varias entradas y
una salida. En él, las entradas siempre aparecen a la izquierda y la salida a la derecha.
• El nombre de la función, es decir, el tipo de función, aparece centrado dentro del bloque.
• Un bloque de funciones elemental se representa de forma gráfica por medio de un bloque con varias
entradas y salidas. En él, las entradas siempre aparecen a la izquierda y las salidas a la derecha.
• El nombre del bloque de funciones, es decir, el tipo de bloque de funciones, aparece centrado
dentro del bloque.
TYPE_n, donde:
NOTA:
Según la norma IEC 61131-3, sólo se permite una letra como primer
carácter de los nombres de instancias. Si desea utilizar cifras como primer
carácter, deberá habilitar esa opción de forma explícita.
BLOQUES DE FUNCIONES
DERIVADOS (DFB)
• Los bloques de funciones derivados (DFB) presentan las mismas propiedades que los bloques de funciones
elementales. Sin embargo, el usuario los crea en los lenguajes de programación FBD, LD, IL o ST.
• La única diferencia con respecto a los bloques de funciones elementales es que los bloques de funciones
derivados se representan gráficamente por medio de un bloque con líneas verticales dobles.
PROCEDIMIENTO
• Los procedimientos son funciones desde el punto de vista técnico. La única diferencia con respecto a las
funciones elementales es que los procedimientos pueden tener más de una salida y admiten el tipo de
datos VAR_IN_OUT.
• Los procedimientos son una ampliación de la norma IEC 61131-3 y se deben habilitar de forma explícita.
• Para transferir valores al FFB o aplicarlos desde él, es necesario utilizar entradas y salidas. A éstas se les
llama parámetros formales.
• A los parámetros formales se vinculan objetos que contienen los estados actuales del proceso. A éstos se
les llama parámetros reales.
VARIABLES PÚBLICAS
• Además de las entradas y salidas, algunos bloques de funciones también disponen de las denominadas
variables públicas.
• Estas variables sirven para transmitir valores estáticos (valores no influidos por el proceso) al bloque de
funciones. Se utilizan para configurar los parámetros del bloque de funciones.
• La asignación de valores a las variables públicas se realiza mediante sus valores iniciales.
• La lectura de las variables públicas se realiza mediante el nombre de instancia del bloque de funciones y
los nombres de las variables públicas.
VARIABLES PÚBLICAS
VARIABLES PRIVADAS
• Además de las entradas, las salidas y las variables públicas, algunos bloques de funciones también
disponen de las denominadas variables privadas.
• Al igual que las variables públicas, las privadas se utilizan para transferir valores estadísticos (valores no
influidos por el proceso) al bloque de funciones.
• El programa de usuario no puede acceder a las variables privadas. Sólo se puede acceder a este tipo de
variables mediante la tabla de animación.
• NOTA: Los DFB intercalados se declaran como variables privadas del DFB principal. Por tanto, tampoco se
puede acceder a sus variables a través de la programación, sino a través de la tabla de animación.
• En todos los FFB se puede configurar una entrada EN y una salida ENO.
• Si el valor de EN es "0", al llamar al FFB no se ejecutarán los algoritmos definidos por dicho FFB,
y ENO se establecerá en "0".
• Si el valor de EN es "1", al llamar al FFB se ejecutan los algoritmos definidos por dicho FFB. Una
vez que se han ejecutado los algoritmos correctamente, el valor de ENO pasa a "1". Si se
produce un error al ejecutar estos algoritmos, ENO pasa a "0".
• Si el pin EN no tiene asignado ningún valor, al llamar al FFB se ejecuta el algoritmo definido por
el FFB (lo mismo ocurre si EN es igual a "1"). Consulte Mantener conexiones de salida en EF
desactivadas.
EN & ENO
BLOQUES DE FUNCIONES
• Gestión de EN/ENO con bloques de funciones que (sólo) tienen un enlace como parámetro de
salida:
• Gestión de EN/ENO con bloques de funciones que tienen una variable y un enlace como
parámetros de salida:
• Según la definición de IEC 61131-3, las salidas de las funciones desactivadas (entrada EN establecida en "0") no
están definidas (esto es aplicable a los procedimientos).
• Gestión de EN/ENO con bloques de funciones o procedimientos que poseen (sólo) un enlace como parámetro de
salida:
• Si el valor de EN en FUNC_PROC_1 se establece en "0", el valor del enlace en la salida OUT de FUNC_PROC_1
dependerá del ajuste del proyecto Mantener conexiones de salida en EF desactivadas.
• Si se establece este ajuste del proyecto en "0", el valor del enlace se establecerá en "0".
• Si se establece este ajuste del proyecto en "1", el enlace mantendrá el valor antiguo que tenía en el último ciclo
ejecutado correctamente.
LLAMADA A UNA SUBRUTINA
En FBD, se llama a las subrutinas mediante los bloques siguientes:
• La subrutina que se vaya a llamar debe encontrarse en la misma tarea que la sección FBD a la que se llame.
• Asimismo, es posible llamar a subrutinas ubicadas dentro de otras subrutinas.
• Las llamadas a subrutinas son una ampliación de la norma IEC 61131-3 y se deben habilitar de forma
explícita.
LLAMADA A UNA SUBRUTINA
• Elementos de control.
REPRESENTACIÓN
• La secuencia de ejecución está determinada en primer lugar por la posición de los FFB
dentro de la sección (ejecución de izquierda a derecha y de arriba a abajo). Si, a
continuación, los FFB se conectan a una red por medio de conexiones gráficas, la secuencia
de ejecución estará determinada por el flujo de datos.
• La ejecución de una sección se realiza red a red en función de las conexiones de FFB de arriba a
abajo.
• No es posible configurar bucles mediante conexiones, ya que en este caso no se puede determinar
de forma inequívoca la secuencia de ejecución en la sección. Los bucles se deben resolver con
parámetros actuales.
• La secuencia de ejecución de las redes que no están conectadas entre sí mediante conexiones está
determinada por la secuencia gráfica (de derecha a izquierda y de arriba a abajo). Esta secuencia de
ejecución se puede modificar
• El cálculo de una red finaliza completamente antes de que comience el cálculo de otra red que
utilice salidas de la red precedente.
• Ningún elemento de una red se considera calculado mientras no se haya calculado el estado de
todas las entradas de dicho elemento.
• El cálculo de una red sólo se considera finalizado cuando se han calculado todas las salidas de dicha
red.
FLUJO DE SEÑAL DENTRO DE UNA RED
Para la secuencia de ejecución dentro de una red se aplican las siguientes reglas:
• El cálculo de un FFB no se inicia hasta que no se hayan calculado todos los elementos (salidas FFB,
etc.) que estén conectados a sus entradas.
• La secuencia de ejecución de los FFB que estén conectados a varias salidas del mismo FFB es de
arriba a abajo.
• La secuencia de ejecución de los FFB no está influida por su posición dentro de la red. Esto no es
válido cuando varios FFB están conectados a la misma salida del FFB "invocante". En este caso, la
secuencia de ejecución está determinada por la secuencia gráfica (de arriba a abajo).
PRIORIDADES A LA HORA DE DETERMINAR EL
FLUJO DE SEÑAL DENTRO DE UNA SECCIÓN
EJEMPLO DE LA SECUENCIA DE
EJECUCIÓN DE OBJETOS EN UNA
SECCIÓN FBD
SITUACIÓN DE SALIDA
• Una lógica de este tipo se debe resolver con ayuda de una variable de realimentación para que el flujo de
señal se pueda determinar de forma unívoca.
• Las variables de realimentación se deben inicializar. El valor inicial se utiliza durante la primera ejecución de
la lógica. Una vez ejecutado, el valor inicial se sustituye por el valor real.
• Tenga en cuenta en ambos casos la secuencia de ejecución (número entre paréntesis detrás del nombre de
instancia) de los dos bloques.
FUNCIÓN AND
• Regla: “Para que la salida sea verdadera (1) todas las entradas deben serlo”
• Equivalencia: La función AND se corresponde a contactos conectados en serie (en LD)
FUNCIÓN OR
• Regla: “La salida será verdadera (1) si al menos una de las entradas lo es”
• Equivalencia: La función OR se corresponde a contactos conectados en paralelo (en LD)
BLOQUES MÁS UTILIZADOS
FUNCIÓN NOT
• Los demás bloques lógicos básicos (NAND, XOR, etc.) se pueden obtener de los
operadores indicados en la página anterior.
R_TRIG & F_TRIG
• Detección canto de subida (RISING EDGE DETECTION) y detección canto de bajada (FALLING EDGE
DETECTION).
• Estos bloques son especialmente útiles para generar eventos que correspondan exclusivamente a un
cambio de estado (solo durante la transición). A manera de ejemplo veamos este tipo de bloque
asociado a una botonera de partida en terreno:
R_TRIG & F_TRIG
• A la botonera de partida en terreno le asociaremos el tag “Partir” (por ejemplo con dirección %I0.1.0
que corresponde al primer canal, de la primera tarjeta de entrada discreta en el primer drop). Luego el
tag “Partida_Aceptada” solo se activará durante un scan, esto evitará que la lógica mantenga la salida
permanentemente activada (por ejemplo un motor corriendo) si la botonera se queda “pegada” en un
estado “1”.
• La situación antes descrita puede presentarse en circuitos, como el mostrado a continuación (lógica
alambrada).
• La salida Q1 se convierte en "1" cuando la entrada S1 se convierte en "1". Este estado permanece
incluso si la entrada S1 vuelve a "0". La salida Q1 vuelve a cambiar a "0" cuando la entrada R se
convierte en "1". Si las entradas S1 y R son ambas "1" simultáneamente, la entrada dominante S1
establecerá la salida Q1 en "1".
• Cuando se llama al bloque de funciones por primera vez, el estado inicial de Q1 es "0".
FUNCIÓN SET – RESET (SR)
• Si interesa que la operación dominante sea “el reset” entonces el bloque a utilizar sería un RS
• En este caso la salida Q1 se convierte en "1" cuando la entrada S se convierte en "1". Este estado
permanece incluso si la entrada S vuelve a "0". La salida Q1 vuelve a cambiar a "0" cuando la entrada
R1 se convierte en "1". Si las entradas S y R1 son "1" simultáneamente, la entrada dominante R1
establecerá la salida Q1 en "0".
• Cuando se llama al bloque de funciones por primera vez, el estado inicial de Q1 es "0".
TEMPRIZADORES TON & TOFF
• Con un profuso uso, en todo tipo de lógica, tenemos a los temporizadores. Siendo el más utilizado el
TON (time on delay), que es un “timer” con retardo en la conexión
• Una señal "1" en la entrada R hace que se asigne el valor "0" a la salida CV. Con cada transición de
"0" a "1" en la entrada CU, el valor de CV se incrementa en 1. Cuando CV ≥ PV, la salida Q se
establece en "1".
• NOTA: El contador solo funciona con los valores máximos del tipo de datos que se está utilizando.
No se produce desbordamiento.
CONTACTORES CRECIENTES Y
DECRECIENTES CTU & CTD
• Para un conteo decreciente se usa el CTD
• Una señal "1" en la entrada LD hace que el valor de la entrada PV se asigne a la salida CV. Con cada
transición de "0" a "1" en la entrada de CD, el valor de CV se reduce en 1.
• NOTA: El contador solo funciona con los valores mínimos del tipo de datos que se está utilizando.
No se produce desbordamiento.
FUNCIÓN MOVE
• El bloque que sigue a continuación es imprescindible en el desarrollo de lógica para todo tipo de
plantas y procesos. Básicamente consiste a la asignación del valor de un tag (o estado) a otro tag,
pudiendo asignarse todo tipo de variables.
• Y su fórmula es:
OUT = IN
FUNCIÓN MOVE
• Dada la simplicidad del bloque es habitual que este precedido de otro bloque, que controla la
asignación, normalmente mediante la habilitación del MOVE accediendo al pin “EN” (enabled),
como se muestra en el siguiente ejemplo:
• El tipo de dato de la entrada debe ser idéntico al tipo de dato de la salida. Esta función se utiliza
tanto con variables booleanas como con variables análogas.
TEMA 3 Conceptos
Fundamentales
Señales Análogas y otras • Escalamientos.
funciones • Operaciones matemáticas.
• Control PID y otras funciones.
SEÑALES ANÁLOGAS
ESCALAMIENTOS
• Para el escalamiento de
señales análogas, debemos
considerar previamente
como hemos configurado
el módulo de entradas
análogas, a manera de
ejemplo veamos el módulo
de entradas análogas de la
correa transportadora
CEIM:
SEÑALES ANÁLOGAS
• Nuestro valor máximo para el tag “ai_IT_VDF_CT” (corriente a motor desde el variador de
frecuencia), esto es a 20 mA, será de 10.000 en unidades de PLC.
• Donde los valores “in_min”, “in_max”, “out_min” y “out_max” serán los parámetros de la
función, para ello se debe definir previamente un parámetro (variable DDT) que sirva para tal
propósito. Una vez definido el nombre del tag se deberá definir del tipo “Para_SCALING”, tal
como se muestra a continuación:
SEÑALES ANÁLOGAS
• OUT = 1, if (IN1 > IN2) & (IN2 > IN3) & .. (IN (n-1) > IN n)
• OUT = 1, if (IN1 ≥ IN2) & (IN2 ≥ IN3) & .. & (IN (n-1) ≥ IN n).
• OUT = 1, if (IN1 < IN2) & (IN2 < IN3) & .. & (IN (n-1) < IN n).
• OUT = 1, if (IN1 ≤ IN2) & (IN2 ≤ IN3) & .. & (IN (n-1) ≤ IN n).
• OUT = 1, if (IN1 = IN2) & (IN2 = IN3) & .. & (IN (n-1) = IN n).
• Esta función verifica la igualdad de las entradas, es decir, la salida se convierte en "1" si hay igualdad en
todas las entradas; de lo contrario, la salida permanece en "0".
• Los tipos de datos de todos los valores de entrada deben ser idénticos.
• La función resta el valor de la entrada Value2 del valor de la entrada Value1 y asigna el resultado a la
salida.
• Los tipos de datos de los valores de entrada y los valores de salida deben ser idénticos.
• Para restar con valores del tipo de datos TIME, puede utilizar el bloque SUB_TIME.
MULTIPLICACIÓN (MUL)
• Los tipos de datos de todos los valores de entrada y salida deben ser idénticos.
• Para la multiplicación con valores del tipo de datos TIME, puede utilizar el bloque MULTIME.
DIVISIÓN (DIV)
• La función divide el valor en el Dividendo con el valor en la entrada Divisor y asigna el resultado a la
salida.
• Los tipos de datos de los valores de entrada y los valores de salida deben ser idénticos.
• Para la división con valores del tipo de datos TIME, puede utilizar el bloque DIVTIME.
• Al dividir los tipos de datos INT, DINT, UINT y UDINT, se omiten los lugares decimales en el resultado,
por ejemplo:
CONVERSIÓN DE ENTEROS A
REALES Y VICEVERSA
• Estas funciones resultan útiles,
por ejemplo, en el escalamiento
de señales de entrada o salida
análogas, como se muestra en
los siguientes extractos de
lógica:
CONVERSIÓN DE ENTEROS A
REALES Y VICEVERSA
• Esto es necesario dado que las
entradas análogas están expresadas
en enteros (en unidades de PLC), Por
lo que convertir a unidades de PLC a
unidades de ingeniería
(escalamiento) requiere de la
conversión previa a reales, que es el
tipo de variable que acepta en
bloque “Scaling”.
• Esta función se utiliza para la selección binaria entre dos valores de entrada.
• Los tipos de datos de los valores de entrada Input0 e Input1 y los valores de salida Output deben ser
idénticos.
• Los límites YMAX e YMIN limitan la salida dentro del rango prescrito. Por lo tanto YMIN ≤ Y ≤ YMAX.
• Los marcadores QMAX y QMIN señalan que se han alcanzado los límites o que se está limitando la señal
de salida.
QMAX = 1 si Y ≥ YMAX
QMIN = 1 si Y ≤ YMIN
• Para limitar la variable manipulada, el límite superior YMAX debe ser mayor que el límite inferior YMIN.
RESTABLECIMIENTO ANTI - WINDUP
• Si se lleva a cabo una limitación de variable manipulada, el restablecimiento anti-windup debe asegurarse
de que el componente integral no pueda exceder todos los límites. La medida antiwindup solo se
implementa si el componente I del controlador no está deshabilitado. Los límites anti-windup son
idénticos a los de la variable manipulada. La medida anti-windup no tiene en cuenta el componente D,
para evitar la limitación de los picos del componente D a través de la medida anti-windup.
• Hay varios tipos de controladores, que se pueden seleccionar a través de los parámetros
EN_P, EN_I y EN_D.
Para la optimización de recursos suele ser útil usar vectores o matrices en la programación de lógica, para
ello partiremos con la definición de un vector de enteros (como ejemplo).
Cuando una señal análoga presenta un ruido importante, por el proceso mismo a medir, resulta muy útil
filtrarla. Para ello podemos hacer uso de la siguiente función:
Seguimiento.
Automático.
INTEGRACIÓN CON DISPOSITIVOS VÍA
ETHERNET TCP/IP
• Para integrar otros dispositivos, via comunicación Ethernet TCP/IP, a nuestro controlador es necesario
hacer uso del DTM. DTM (administrador de tipo de dispositivo), que es un controlador de dispositivo
que se ejecuta en el PC host. Proporciona una estructura unificada para acceder a los parámetros del
dispositivo, configurar y operar los dispositivos y solucionar los dispositivos.
• Lo primero a realizar es verificar si nuestro dispositivo se encuentra en la libraría del DTM de control
expert, para ello realizaremos lo siguiente:
• Cuando se transfiere data de un dispositivo a otro suele utilizarse el envió de Word´s (palabras), para las
ordenes de comando y situación de estados, ello dado que enviar solo un único bit (o algunos pocos)
sería un pérdida importante de recursos. Entonces para resolver este problema se suele emplear un
conjunto de bits que son asignados a una palabra (Word) y luego se envía esta. En la recepción se debe
“desempacar” la palabra y obtener los bits en consecuencia.
• Donde los tipos de datos para Word, son justamente word y para los Bit´s son booleanos (EBOOL). Se
muestra a continuación una aplicación de estas funciones (para la integración de sensores ifm
comunicados mediante Ethernet TCP/IP).
OPERACIONES EN LINEA