Вы находитесь на странице: 1из 59

Historia de los PLC PLC

Primer controlador programable: MODICON, a fines de los 60 Objetivo: sustituir la lgica de rel Lgica de rel:
Circuitos lgicos basados en contactores, rels y temporizadores discretos Utilizada para automatizacin de procesos secuenciales en ambientes industriales

INTRODUCCIN

Historia de los PLC


Primer cambio cualitativo con PLCs: posibilidad de reprogramacin de la lgica sin cambios drsticos en el cableado del hardware, sustituyendo rels mecnicos por rels virtuales

Historia de los PLC


Ejemplo: uso de un PLC en el encendido de un motor circuito de arranque de un motor por lgica
de rel

Historia de los PLC


Cableado del PLC para implementar lo anterior:

Historia de los PLC


Observaciones sobre cableado de PLC anterior:
PLC se conecta a las entradas y salidas de la planta El rel intermedio Rel 1 se sustituye por software del PLC

Historia de los PLC


Si se agrega un botn adicional de arranque.
- Nuevo cableado con lgica de rel:

Historia de los PLC


- Nuevo cableado del PLC:

Ventajas:
cambio de hardware por software flexibilidad

Historia de los PLC


La capacidad de los PLCs se ampla en la dcada de los 70:
Introduccin de comunicaciones: protocolo MODBUS (en MODICON). Permite descentralizacin del sistema Introduccin de entradas y salidas analgicas. Permite uso ms amplio del PLC como recolector de datos y la posibilidad de realizar control

Historia de los PLC


La ampliacin de capacidad de los PLCs en los 70 se sustenta en:
Evolucin de microprocesadores y microcontroladores Conversores anlogo-digitales

Historia de los PLC


Dcada de los 80:
Programacin por lenguajes grficos desde ambientes de desarrollo de PCs (realizada hasta los 80 por consolas especiales) Uso de microntroladores ms potentes dentro de la CPU de los PLC (INTEL, Motorola, AMD).

Historia de los PLC


Dcada de los 90:
386 de INTEL y 68000 de Motorola Estandarizacin de protocolos de comunicaciones y lenguaje

Historia de los PLC


Estndar de lenguajes: 1131-3.
- No se utiliza en forma amplia. - Se definen 5 lenguajes.

Historia de los PLC


Hoy da existen fbricas de PLC prcticamente en todos los pases desarrollados:
- Modicon, Allen Bradley y General Electric en Estados Unidos - Siemens en Alemania - Telemcanique en Francia - Omrom en Japn

Dentro de un PLC
Un PLC se compone de un CPU, memoria y entradas/salidas. Diferencias con PC:
- El PLC no tiene interfaz grfica - El hardware del PLC es de mejor calidad - El sistema operativo del PLC es ms robusto

Dentro de un PLC
Las entradas digitales del PLC se conectan a las entradas fsicas del proceso.
- Presentan aislacin ptica. - Normalmente se manejan con baja tensin de continua.

Dentro de un PLC
Sustituyendo la lgica de rels
- Los rels intermedios de la lgica de rel se sustituyen por los rels virtuales del PLC (lenguaje LD). - Otro elemento de la lgica de rels: el timer. El PLC puede correr cientos de timers simultneamente, por software.

Dentro de un PLC
Las salidas digitales del PLC actan directamente sobre el mundo. Pueden ser transistores o rels. Las salidas digitales presentan aislacin galvnica.

Dentro de un PLC
El PLC ejecuta cclicamente un programa de usuario. El perodo de ejecucin se denomina tiempo de ciclo del PLC.

Dentro de un PLC
Cada ciclo se divide en tres etapas:
1) Actualizacin de entradas fsicas y de comunicaciones. 2) Ejecucin del programa. 3) Actualizacin de salidas fsicas y de comunicaciones

Dentro de un PLC
Debido a la divisin del ciclo:
- las salidas no cambian mientras se ejecuta el programa - se ignoran los cambios de entradas mientras se ejecuta el programa.

Dentro de un PLC
Tiempo de respuesta: tiempo desde que cambia una entrada hasta que cambia la salida correspondiente. Peor caso de tiempo de respuesta: dos tiempos de ciclo.

Dentro de un PLC
Ancho mnimo de entrada para ser reconocida: tiempo de ciclo.

Dentro de un PLC
Configuracin del PLC. Dos parmetros importantes:
Tiempo de ciclo Modo de funcionamiento del PLC en red de comunicaciones

Dentro de un PLC
Configuracin del tiempo de ciclo
Determina el tiempo de respuesta de PLC a estmulos externos Depende de largo del programa y configuracin comunicaciones

Dentro de un PLC
Configuracin del modo de funcionamiento del PLC en la red de comunicaciones:
Unidad stand-alone o en red de comunicaciones El PLC puede tener mdulos remotos de entrada salida, o comunicarse con otros PLCs Los mdulos remotos se disponen lo ms cerca posible de la toma de seales, resultando en ahorro de cableado del orden del costo de los equipos

La memoria del PLC PLC


Estructura de la memoria:
- Memoria no accesible - Memoria de programa de usuario y configuracin - Memoria accesible

TIPOS DE DATOS

La memoria del PLC


Memoria accesible:
- Memoria E/S - Memoria Lectura/Escritura

Tipos de datos de un PLC


Las localidades de la memoria accesible se agrupan formando datos

Memoria E/S se actualiza con E/S.

Tipos de datos de un PLC


Hay cuatro tipos de datos
Datos binarios (1 bit) Palabras (2 bytes) Palabras dobles (4 bytes) Flotantes

Variables y constantes
Un dato puede ser variable o constante Constante: valor no se puede modificar en ejecucin de programa Variable: valor se puede modificar en ejecucin de programa

Direcciones de los datos


Un dato del PLC se refiere por su direccin Direcciones:
- Entrada - Salida - Datos internos (memoria Lectura/Escritura)

Direcciones de los datos


Direccin: [Cdigo letras] [Cdigo nmeros]

Direcciones de los datos


Cdigo de letras: distingue el tipo de dato y el espacio de la memoria Primer letra:
- I/E: Direccin E - Q/O: Direccin S - M: Direccin dato interno

Direcciones de los datos


Segunda letra:
X: bit B: byte (8 bits) W: word (16 bits) D: double word (32 bits) L: long word (64 bits)

Direcciones de los datos


Direcciones de datos binarios
- Internos: M XX.YY - Entradas: I XX.YY - Salidas: O XX.YY -

Direcciones de los datos


Direcciones de palabras
Internas: MW XX.YY Entradas Conversores A/D: IW XX.YY Salidas Conversores D/A: OW XX.YY Constantes (LAB): KW XX.YY

Direcciones de los datos


Direcciones de palabras dobles
- Internas: MD XX.YY - Constantes (LAB): KD XX.YY

Mapeo de extensiones y unidades remotas en memoria


Las entradas/salidas de un sistema se mapean como datos en memoria de E/S del PLC central

Mapeo de extensiones y unidades remotas en memoria


Operacin de PLC central y unidades remotas:
- Entrada: se transfieren entradas a zona de memoria (comunicaciones o bus datos) - Ejecucin del programa - Salida: se transfiere zona de memoria a salidas de

PLC

LADDER

Porqu LADDER?
Orgenes histricos Ejemplo 1 lgica de rels: A1 o A2 encienden el motor M

Porqu LADDER?
Cambio conexin paralelo a serie requiere recableado

Porqu LADDER?
Con PLC:

Porqu LADDER?
Ejemplo 2 lgica de rels: encendido de motor con rel intermedio

Porqu LADDER?
Con PLC:

Porqu LADDER?
Objetivos
Aumentar la confiabilidad Aumentar la flexibilidad Mantener la facilidad de soporte: lenguaje de programacin fcilmente entendido por electricistas de planta

Porqu LADDER?
Programas LD ejemplo 1:

Porqu LADDER?
Programa LD ejemplo 2:

Estructura programa LD
Lenguaje grfico Programa consiste en una secuencia de escalones (en ingls, rungs) Estructura de escaln:
comienza en barra de alimentacin a la izquierda (positivo de fuente) condiciones y acciones, conectadas por lneas de conexin termina en una barra de alimentacin a la derecha (negativo de fuente)

Estructura programa LD
Los escalones se ejecutan de arriba hacia abajo Cada escaln se ejecuta de izquierda a derecha

Diferencias entre fabricantes


Diferencias entre fabricantes: implementacin y nomenclatura de las instrucciones En este curso se utiliza la nomenclatura de los PLCs del laboratorio, en algunos aspectos estndar y fcilmente comprensible

Smbolos bsicos
Contacto (entrada): Bobina (salida): Cada smbolo tiene asociado un bit de la memoria, que se refiere por su direccin o por una etiqueta (en ingls label)

Operaciones Bsicas
AND (Conexin serie) O1 = 1 si (I1 = 1) y (I2 = 1)

Instrucciones con BITs


Contacto directo:
Contacto normalmente abierto Verdadero si bit vale 1

OR (Conexin Paralelo)

O1 = 1 si (I1 = 1) o (I2 = 1)

Contacto invertido:
Contacto normalmente cerrado Verdadero si bit vale 0

Instrucciones con BITs


Bobina directa:
Anlogo a la bobina de un rel Si escaln es 1, escribe 1 en bit asociado Si escaln es 0, escribe 0 en bit asociado

Instrucciones con BITs


SET (o LATCH):
Instruccin de salida retentiva Si el escaln es 1 escribe 1 en el bit Si el escaln es 0 no hace nada Se utiliza en conjunto con RESET

Bobina invertida:
Funcin inversa de Direct coil

RESET (o UNLATCH):
Si el escaln es 1 escribe 0 en el bit Si el escaln es 0 no hace nada

Instrucciones con BITs


Ejemplo BOBINA vs SET/RESET: contador de pulsos electromagnticos
Solucin con Direct Coil

Instrucciones con BITs


Solucin con SET:

10

Bloques funcionales
Las instrucciones de aqu en adelante se representan grficamente como bloques funcionales Bloque funcional: objeto grfico que se representa por un rectngulo, con puntos de conexin de entradas, conexin de salidas y un identificador

Bloques funcionales
El identificador describe funcin del bloque Ejemplo: bloque funcional que implementa la funcin FUN, con dos entradas y dos salidas

Las entradas y salidas son datos. El tipo de dato de cada una depende del bloque.

Contadores
Existen tres tipos:
UP- Counters: CTU en PLC de laboratorio DOWN Counters: Normalmente llamados CTD (PLC de laboratorio no tiene) UP-DOWN Counters: VRZ en PLC de laboratorio

Contadores
Entrada CU (bit): Pulso, se conecta al tren de pulsos que se cuentan Entrada R (bit): Reset, escribe 0 en acumulador Entrada PV (word): lmite mximo de cuenta Salida Q (bit): Done, indica si acumulador >= PV CV (word) = acumulador

Rango de cuenta: depende de fabricante. En PLCs de laboratorio:


CTU cuenta desde 0 a 32767 VRZ cuenta desde -32768 a 32767

Contadores: Ejemplo

Contadores: Ejemplo
Observacin: el contador se incrementa a intervalos de tiempo variables (dependen del pulso I1)

11

Timers
Timer: instruccin destinada a esperar cierto tiempo antes de una accin Tres tipos de timers:
Timer On Delay (retardo en el encendido): en PLC de lab, ESV y TON. Luego que escaln pasa a 1 durante X seg, pasa bit de salida a 1. Timer Off Delay (retardo en el apagado): en PLC de lab, ASV y TOFF. Luego que escaln pasa 0 durante X seg, pasa bit de salida a 0. Timers retentivos: no existen en los PLCs de lab. Cuenta el tiempo que el escaln es 1, congelando la cuenta con cambios de 1 a 0 del escaln.

Timers
Timer On Delay ESV:

La cuenta del tiempo se mantiene en variable interna Acumulador Entrada T_0 (bit): Habilitacin, se conecta al pulso que el timer retarda Entrada ZD (dword): Preset, determina valor del acumulador para el que se ejecuta accin del timer Salida Q (bit): Done, indica la expiracin del tiempo de retardo

Timers: Ejemplo ESV

Timers: Ejemplo Retentivo

Timers
La cuenta del timer es independiente de la ejecucin del programa (a cargo del sistema operativo) La cuenta del contador SI depende de la ejecucin del programa

Timers
Precisin
Errores en la entrada: 1 tiempo de ciclo Errores en la salida: 1 tiempo de ciclo Total: 3 tiempos de ciclo Ejemplo: tiempo de ciclo de 5 mseg lleva a error de 15 mseg

Retardos en el filtrado y en la electrnica

12

Shift Registers
Instruccin que almacena eventos en rea de memoria por desplazamiento o rotacin de los bits individuales En la familia del PLC del laboratorio, se denomina SHIFT No disponible en el PLC del laboratorio

Shift Registers
Bloque funcional asociado a instruccin SHIFT:

Shift Registers
Entradas de instruccin SHIFT:
E (W o DW): operando (almacena los eventos) D/W (bit): tipo de dato E ANZ (W): nmero de posiciones del movimiento LKS (bit): direccin ROT (bit): operacin es rotacin ROTC (bit): operacin es rotacin con CY_E SLOG (bit): operacin es desplazamiento SARI (bit): operacin es desplazamiento aritmtico CY_E (bit): valor inicial de carry flag

Shift Registers
Operaciones ROT/ROTC de SHIFT:

Salidas de instruccin SHIFT:


Salida CY_A (bit): valor final de carry flag Salida A (W o DW): resultado de la operacin

Shift Registers
Operacin SLOG de SHIFT:

Control de flujo
JSR GOTO En PLC de laboratorio, salto condicional al valor TRUE de un bit, definido por:
Jump label: posicin donde salta (siempre hacia adelante) Jump symbol: smbolo asociado a instruccin JUMP Bit que define el salto

13

Control de flujo
Esquema instruccin JUMP PLC lab:

Otras Instrucciones
Existen muchas instrucciones en forma de bloques funcionales (muchas se estudian en otras partes del curso) Desde el punto de vista del programa LADDER se clasifican en:
Instrucciones de entrada: evalan si el escaln es verdadero o falso Instrucciones de salida: se ejecutan segn resultado del escaln

Otras Instrucciones
Ejemplos de instrucciones de entrada:
Instrucciones de comparacin: Igual (EQU), Mayor (GRT), etc. Verdadero o falso las entradas tipo W sean iguales, una mayor que la otra, etc.

Otras Instrucciones
Ejemplos de instrucciones de salida:
Operaciones aritmticas o lgicas: ADD, AND, MUL, etc. Entradas tipo W y salida tipo W Operaciones de movimiento de memoria: permiten copiar reas de memoria Funciones de control PID Funciones de comunicaciones: permiten intercambio de mensajes entre PLCs

Ejemplo
Se desea escribir un programa que controle el encendido apagado de una bomba. La bomba ser encendida si: 1) Se pulsa el botn de arranque. 2) La proteccin trmica est deshabilitada. 3) Est abierto el botn de emergencia. 4) Est abierto el botn de parada. Desde un tiempo T despus del encendido, no puede haber ni sobre corriente ni baja corriente. Expresado de otra forma, desde un tiempo T despus del arranque, la corriente I debe cumplir IMIN < I < IMAX, siendo IMIN e IMAX lmites prefijados.

Ejemplo
El motor de la bomba se apagar si: 1) Se pulsa el botn de parada. 2) Se cierra la proteccin trmica. 3) Se pulsa el botn de emergencia. 4) Los lmites de corriente no son los correctos.

14

Conexiones al PLC

Ejemplo

X_APAGADO ARRANQUE PARADA TERMICO

ALARMA

X_TRANSITORIO

Transiciones

S S
X_APAGADO

Ejemplo
3
Apagado Apaga bomba
PARADA or ALARMA or TERMICO ARRANQUE and (NO PARADA) and (NO ALARMA) and (NO TERMICO)

R
X_TRANSITORIO SALIDA_TIMER X_ENCENDIDO

S S
X_TRANSITORIO PARADA

4
X_TRANSITORIO

R
X_APAGADO

TERMICO

S S
ALARMA X_ENCENDIDO

PLC

R
PARADA

Transitorio

X_ENCENDIDO

TERMICO

X_APAGADO

S S
ALARMA X_ENCENDIDO

Enciende bomba Enciende timer


SALIDA_TIMER = 1 ERROR or PARADA or ALARMA or TERMICO

R
ERROR X_APAGADO BOMBA_ON

EL AC31GRAF

Encendido

Acciones

X_TRANSITORIO

BOMBA_ON

ERROR = (CORRIENTE > MAX) OR (CORRIENTE < MIN)

Introduccin
PLCs laboratorio: 07KR51 ABB Ambiente de desarrollo: AC31GRAF

Introduccin
Permite:
- Desarrollar programas para el PLC - Comunicacin con PLC

Comunicacin: - Cargar configuracin en el PLC


- Cargar programas en el PLC - Determinar variables y estado del PLC

15

La unidad de programacin
La unidad de programacin es el proyecto. Un proyecto consta de uno o ms mdulos. Un mdulo puede ser: programa, subrutina o interrupcin.

La unidad de programacin
La compilacin del proyecto resulta en un ejecutable.

El Project Manager
Los proyectos se manejan desde el Proyect Manager. Para abrir: Open Para crear nuevo proyecto: New Un proyecto puede tener:
- Ms de un mdulo (modular) - Un nico mdulo (main)

Manejo de proyecto modular


Desde Program proyecto. Permite:
-

Management

del

abrir, crear mdulos editar listas de variables compilar mdulos configurar y establecer comunicacin con el PLC

Manejo de proyecto modular


Hay tres tipos de mdulos:
- Programa - Subrutina - Interrupcin: de hardware o de tiempo

Manejo de proyecto modular


Interfaz de comunicacin con el PLC: Control Panel. Permite:
Establecer configuracin Transferir configuracin de defecto Transferir ejecutable del proyecto Operaciones de control sobre PLC Transferencia de mensajes de error

16

Manejo de proyecto modular


Ejecucin del programa se sigue desde la ventana debug

Proyecto de mdulo nico


Se trabaja desde el editor del mdulo main

Editores de programas
Cada lenguaje de programacin tiene su editor Un mdulo se edita bajo el editor de su lenguaje

Editores de programas
Los editores del paquete son:
Editor Editor Editor Editor FBD/LD IL Quick LD SFC

Editores de programas
Instrucciones comunes a los editores:
- Manejo de archivos - Edicin de variables - Compilacin de programas - Comunicacin y configuracin de la comunicacin con el PLC

Editores de programas
El Editor LD/FBD:
Barra de herramientas FBD/LD Comentarios Labels, saltos Edicin de bloques Instrucciones de LD Insertando Timers, Contadores

17

El bloque funcional PLC


Bloque funcional: rectngulo con entradas, salidas e identificador.

LENGUAJE FBD

Estructura de programa FBD


Programa FBD: consiste de conexiones entre bloques funcionales y datos, a travs de lneas de conexin. Se permite conectar la salida de un bloque a la entrada de otro. El programa se ejecuta de arriba abajo, y de izquierda a derecha.

Figura 1-2

Ejemplo
En LD, el programa anterior queda:

Grupos de instrucciones
El 90% de los programas se resuelve con el 20% de las instrucciones.

18

Grupos de instrucciones
Clasificacin:
Funciones binarias. Funciones de timer. Contadores. Funciones de palabras simples y dobles: comparacin, aritmticas, lgicas. - Funciones de control de programa. - Funciones de control. - Funciones de comunicacin. - Funciones de conversin de formato (pack, unpack). - Funciones de alto nivel (multiplexor). - Funciones de acceso a memoria. -

Grupos de instrucciones
Funciones binarias: - Entradas salidas de tipo binario - Ejemplos: AND, OR, XOR,
=S (LATCH), =R (UNLATCH)

- Se permite cambiar el nmero de


entradas de ciertos bloques

- Las variables pueden ser negadas

Grupos de instrucciones
Funciones de Timer y Contadores
- Incluyen timers, contadores, monoestables, etc.

Grupos de instrucciones
Funciones de palabras simples y dobles:
- Funciones de comparacin: resultado es un bit. - Funciones aritmticas: el resultado es una palabra. Incluyen suma, resta, multiplicacin y divisin. - Funciones lgicas de palabras: en general el resultado es una palabra. Ejemplos: * WAND, WOR, WXOR ejecutan AND, OR XOR bit a bit de las palabras de entrada. * Shift, Rotate.

Grupos de instrucciones
Funciones de control de programa. Ejemplos:
- Jump: salto condicional. Una buena estructura FBD lo evita. - DI y DO: lectura/escritura inmediata de entrada o salida,respectivamente.
Y=

Grupos de instrucciones
Funciones de control.
- Incluyen control PI, PID, etc.

KP w x KP + Y ( Z 1) + ( w x) 100 TN / T 100

1 F ( s ) = KP1 + s * TN

19

Grupos de instrucciones
Funciones de conversin de datos. Incluyen:
- Conversin de palabra a palabra doble - Pack y unpack

Grupos de instrucciones
Funciones de comunicaciones
La puerta serie del PLC se puede utilizar de dos maneras:
- Mensajes con un PC (RS232 ASCII) - Ambientes industriales (protocolo Modbus)

Las funciones de comunicacin incluyen:


- Inicio de puerta serie - Comunicacin a travs de protocolo Modbus

Grupos de instrucciones
Funciones de alto nivel: incluyen las compuertas selectoras AWT y AWTB
AWT: asigna palabra de salida a una de dos palabras de entrada segn el valor de un bit de entrada

Grupos de instrucciones
Funciones de acceso a memoria: movimientos de datos entre regiones de memoria. Ejemplo: COPY, copia los datos de una regin de memoria a otra

LD o FBD
Hay dos diferencias entre un programa FBD y uno LD:
- La implementacin de las funciones lgicas de bits - La concatenacin de bloques funcionales: en LD no, en FBD s.

PLC

LENGUAJE IL

20

Estructura de programa en IL
Un programa en IL consta de una lista de instrucciones. Una instruccin comienza al inicio de una lnea. Consta de:
1) Un operador, 2) Opcionalmente modificadores 3) Uno o ms operandos, separados por ,

Estructura de programa en IL
Se permiten labels y comentarios ( entre (* y *))

Registro IL (resultado actual)


Toda instruccin involucra al registro IL Si la instruccin es una operacin:
- Si hay ms de un operando, el registro IL es uno - El resultado se devuelve en registro IL
Label Inicio:

Ejemplos de instrucciones IL
Operador LD ANDN ST Operando BOTON %I62.02 INIC_MOTOR Comentario (*BOTON ->A"*) (*!%I62.02 AND *) (*A -> A*) (*A -> (* INIC_MOTOR*)

Lgicamente, hay un registro IL para cada tipo de datos permitido

Llamados a funciones desde IL


Se llaman mediante una de las sentencia CAL o la sentencia !BA 0 Ejemplo: llamado a TIMER:
CAL ESV(DISPARO,TIEMPO_DELAY,SALIDA)

Modificadores de operadores
N=Negacin booleana del operador C=Ejecucin de instruccin condicional al valor del registro IL

21

Introduccin PLC
El SFC es un lenguaje basado en operaciones secuenciales Programa en SFC: secuencia de pasos, transiciones y saltos

SFC

Introduccin
Reglas:
Entre dos pasos debe existir al menos una transicin Entre dos transiciones debe existir al menos un paso Debe existir al menos un paso inicial

Secuencia de ejecucin en SFC


Consideremos un programa que comienza como sigue:

Secuencia de ejecucin en SFC

Ejemplo
La bomba ser encendida si:
Se pulsa botn de arranque Proteccin trmica deshabilitada Botn de emergencia abierto Botn de parada abierto

22

Ejemplo
Despus de un tiempo T a partir del encendido no puede ni sobre ni baja corriente

Ejemplo
Apagado:
Se pulsa botn de parada Salta proteccin trmica Se pulsa botn de emergencia Se pasa uno de los lmites de corriente

Ejemplo: Nivel 1

Ejemplo
Elementos nuevos:
- Divergencia simple - Salto

Ejemplo
Nivel 2 del Programa: PASO 1 (*BOMBA APAGADA*): BOMBA_ON(R); TRANSICIN 1:

Ejemplo
PASO 2 (*ARRANQUE*): DISPARO_TIMER; BOMBA_ON(S); TRANSICIN 2 (*ESPERO*):

23

Ejemplo
TRANSICIN 4: (*CONDICIN DE PARADA PRECIPITADA*)

Ejemplo
PASO 3 (*ENCENDIDO*):
ACTION (N) : LD CORRIENTE GE CORRIENTE_MAX ST ERROR LD CORRIENTE_MIN GE CORRIENTE ST ERROR_MIN LD ERROR_MIN OR ERROR ST ERROR (*ERROR = (CORRIENTE > CORRIENTE_MAX) OR (CORRIENTE < CORRIENTE_MIN) *) END_ACTION;

Ejemplo
TRANSICIN 3 (*CONDICIN DE PARADA):

Componentes SFC
Componentes bsicos:
pasos pasos iniciales transiciones saltos a pasos

El Paso
Representacin:

El Paso
Nivel 1: comentario y nmero Estados: Activo y Pasivo (Inactivo) Estado Activo: Desde el disparo de una transicin cualquiera anterior hasta el disparo de una transicin cualquiera posterior

24

El Paso
Consiste de una secuencia de acciones. Hay tres tipos de acciones:
- Boolean: relaciona valor de variable con estado del paso - Non-Stored: se ejecuta en cada ciclo de ejecucin mientras el paso est activo - Pulse: se ejecuta una sola vez durante el estado activo del paso

Sintaxis de las acciones


Accin tipo boolean: var: actividad del paso -> "var" /var;negacin de actividad del paso -> "var" var(S); setea var al activarse paso var(R); resetea var al activarse paso

Sintaxis de las acciones


Accin tipo P (pulse): ACTION (P): (* Instrucciones IL *) END_ACTION;

Sintaxis de las acciones


Accin tipo N (non-stored): ACTION (N): (* Instrucciones IL *) END_ACTION;

El Paso Inicial
Un programa comienza en el paso inicial. El paso inicial se representa:

La transicin
Representacin:

25

La transicin
Nivel 1: nmero y comentario Dos estados posibles: habilitada o inhabilitada Una transicin est habilitada si todos los pasos anteriores estn en estado activo.

La transicin
Nivel 2: secuencia de sentencias con resultado booleano Condicin de disparo: resultado = TRUE El disparo activa el paso siguiente

La transicin
Lenguajes en que se programa:
- QUICK LD (un solo rung) - IL (resultado = valor final de registro IL)

Salto
Representacin:

Divergencias y convergencias
Las Divergencias / Convergencias pueden ser Simples o Dobles

Convergencias/Divergencias Simples

Divergencia simple: La actividad del paso habilita todas las transiciones. Convergencia simple: El disparo de una transicin cualquiera activa el paso.

26

Convergencias/Divergencias Dobles PLC

Divergencia doble: el disparo de una transicin activa todos los pasos. Convergencia doble: la transicin est habilitada si todos los pasos estn activos

HERRAMIENTAS DE DIAGNSTICO

Introduccin
Todo PLC tiene:
- Cdigos de error. - LEDs indicadores.

Introduccin
Los cdigos de error permiten identificar errores de programacin y operacin. LEDs indicadores, en general:
- LED rojo significa problema - LED verde significa correcto - LED parpadeando significa estado de espera y ocupado

Clasificacin de errores
Errores fatales: abandona ejecucin y pasa a estado de falla. Errores no fatales: contina ejecucin; se indican mediante. mensajes o bits de error Errores de programacin o configuracin.

PLC

COMUNICACIONES

27

Introduccin
Opciones de transmisin de seales:
Conexin directa en lazos de corriente (4-20 mA; seal analgica a conversor A/D) Comunicaciones digitales

Introduccin
Principios bsicos de la comunicacin:
Datos se envan por un par de cables, en forma serial, a una velocidad de transmisin prefijada (baudios) Los datos se envan de a un byte

Introduccin
Modelo de comunicacin digital serial:

Introduccin
Operacin de comunicacin digital serial:
Llave cerrada -> transmite 1 lgico Llave abierta -> transmite 0 lgico Estado de reposo: 1 lgico Transmisin de un byte:
Bit de inicio (0 lgico por medio tiempo de bit) 8 bits de datos (un bit por tiempo de bit) Bit de parada (0 lgico)

Introduccin
Estados:

Introduccin
Ventajas de la comunicacin digital:
Baja dramticamente el costo de cableado No prdida de precisin analgica

28

Introduccin
Desventaja de comunicaciones digitales: no hay estndar. Existen muchos protocolos: Modbus, Profibus, Interbus, Bitbus, etc.

Introduccin
El protocolo ms extendido: Modbus. Los protocolos de comunicaciones digitales que involucran PLCs son maestro-esclavo.

Introduccin

Introduccin
PLC puede actuar en doble funcin de maestro/esclavo. Esto permite:
- Utilizar la interfaz grfica de un PC para desplegar variables de un PLC - Mejorar la perfomance de la red de instrumentacin.

Redes Fsicas
Gran mayora de redes: RS-485 o RS422. Redes multidrop:
Maestro enva mensaje a dispositivos; todos reciben. Slo el dispositivo referido habilita la transmisin y enva los datos. Nunca hay ms de un transmisor activo.

Redes Fsicas
Red Multidrop RS 485:

29

Redes Fsicas
RS 485 y 422:
- Dos hilos flotantes. Resistencias de terminacin - Transmisin diferencial: 0.2V define cambio de estado - Gran inmunidad al ruido - Unin de tierras digitales de transmisin y recepcin - Nmero mximo de dispositivos: 32 - Distancia mxima con par trenzado: 1600m - Problema: una falla puede hacer caer la red

Protocolo MODBUS
Se analiza en detalle el MODBUS, uno de los protocolos ms difundidos Dos versiones: ASCII y RTU (binario). El ASCII no se usa porque lleva el doble de tiempo Protocolo maestro esclavo Se transmiten mensajes de error y timeout de respuesta

Protocolo MODBUS
Mensaje genrico enviado por el maestro:

Protocolo MODBUS
Funciones:
leer n bits (funcin 01) leer n palabras (funcin 03) escribir un bit (funcin 05) escribir una palabra (funcin 06) escribir n bits (funcin 0F) escribir n palabras (funcin 10)

Protocolo MODBUS
Texto de mensaje. Consiste de:
Direccin de Lectura o Escritura (2 bytes) Nmero de direcciones de Lectura o Escritura a partir de la direccin inicial En caso de escritura, los datos escritos.

Protocolo MODBUS
Ejemplo: Lectura de N palabras (03) del esclavo NS. El maestro enva:

Los 2 bytes ADH AHL indican la direccin inicial de lectura

30

Protocolo MODBUS
Respuesta del esclavo:

Protocolo MODBUS
Si el esclavo o maestro recibe un mensaje errneo, transmite un mensaje de error. La comunicacin MODBUS del esclavo del PLC es independiente de la ejecucin del programa; depende slo del sistema operativo.

Protocolo MODBUS
Requisitos para lectura o escritura de variables del PLC:
- Conocer direcciones a las que se accede - Fijar en PLC el nmero de esclavo

Protocolo MODBUS
Las funciones MODBUS son orientadas a bits o palabras, por lo que en otro caso hay que hacer conversiones necesarias. Aplicacin de MODBUS: lectura o escritura de registros de un controlador.

Introduccin a redes TCP/IP PLC


Objetivo: en base a un ejemplo
- Explicar conceptos bsicos de arquitectura de capas - Explicar funciones de las distintas capas de TCP/IP

INTRODUCCIN A TCP/IP

31

Ejemplo TCP/IP: Planteo


Red de comunicaciones: conjunto de nodos conectados por enlaces fsicos Esquema de comunicaciones: la red se compone de nodos clientes y servidores Nodo servidor: escucha la red en forma permanente Nodo cliente: encargado de inicio de comunicacin con servidor Un nodo puede ser cliente y servidor simultneamente

Ejemplo TCP/IP: Planteo


Se presentan elementos que intervienen en las comunicaciones con transporte TCP/IP

Protocolo de aplicacin
Cliente se comunica con servidor a travs de protocolo cliente servidor: mensajes y codificacin Protocolo de ejemplo. Transmisin de palabras. Mensajes (se codifican con una palabra):
WRITE_DATA (01) (CL SV) RCPT_READY (02) (SV CL) READ_DATA (03) (CL SV) DATA (04) (CL SV , SV CL ) END_TRANSFER (05) (CL SV, SV CL)

Protocolo de aplicacin
Ejemplo de comunicacin:
CLIENTE
WRITE_DATA RCPT_READY DATA END_TRANSFER

SERVIDOR

El caso de LAN 10BaseT


Nodos se conectan a travs de LAN Ethernet 10BaseT Descripcin de Ethernet 10BaseT:
- Consiste de nodos y hubs - Conexiones: 5 cables terminados en RJ-45 - Un hub tiene varias bocas; repetidor por difusin

El caso de LAN 10BaseT


Ejemplo Ethernet:

32

El caso de LAN 10BaseT


Medio Ethernet: protocolo IEEE 802.3
- medio de difusin - colisiones; deteccin y retransmisin - cada nodo se identifica de forma nica

El caso de LAN 10BaseT


Implementacin de protocolo de aplicacin sobre LAN:
- Programa servidor - Bloques funcionales asociados a cliente de protocolo de aplicacin - Bloques funcionales asociados a protocolo Ethernet

Lmites de tamao 10BaseT:


- Largo mximo de segmento: 100 m - Nmero mximo de segmentos: 5

El caso de LAN 10BaseT


Cliente protocolo de aplicacin

El caso de LAN 10BaseT


Bloques Ethernet:

El caso de LAN 10BaseT


Bloques Ethernet: (utilizado por servidor para escuchar la red)

El caso de LAN 10BaseT


Por qu implementamos dos partes y no una? Debido a que la interfaz Ethernet es independiente de la aplicacin

33

Anlisis del cdigo WRITE


ENABLE LAN_ADDR LOCAL_BUFFER BUFFER_SIZE REMOTE_BUFFER READY

WRITE

CLIENTE
WRITE_DATA RCPT_READY DATA END_TRANSFER

SERVIDOR

Anlisis de cdigo WRITE


CLIENTE
WRITE_DATA

Anlisis de cdigo WRITE


CLIENTE
RCPT_READY

SERVIDOR

ENABLE LAN_ADDR LOCAL_BUFFER BUFFER_SIZE REMOTE_BUFFER

WRITE

SERVIDOR

ENABLE LAN_ADDR LOCAL_BUFFER BUFFER_SIZE

WRITE

Cdigo:
ENABLE TR_WRITEDATA LAN_ADDR ADDR_WRITEDATA %1 = BUFFERSIZE TR_WRITEDATA_END

READY

Cdigo:
TR_WRITEDATA_END RCV_RCPTDATA LAN_ADDR

REMOTE_BUFFER

READY

=S

TR_WRITEDATA

=S

RCV_RCPTDATA

LAN_TR

LAN_RCV

TR_WRITEDATA_END

TEMP_BUFFER %1 RCPTDATA_END

=R

TR_WRITEDATA

RCPTDATA_END

=R

RCV_RCPTDATA

Anlisis de cdigo WRITE


CLIENTE
DATA

Anlisis de cdigo WRITE


CLIENTE
DATA

SERVIDOR

ENABLE LAN_ADDR LOCAL_BUFFER BUFFER_SIZE REMOTE_BUFFER

WRITE

SERVIDOR

ENABLE LAN_ADDR LOCAL_BUFFER BUFFER_SIZE

WRITE

Cdigo:
1)

READY

2) Envo mensaje en TEMP_BUFFER


RCPTDATA_END TR_DATA LAN_ADDR TEMP_BUFFER BUFFER_SIZE+3 TR_DATA_END

REMOTE_BUFFER

READY

Construyo mensaje [DATA][BUFFER_SIZE][REMOTE_BUFFER][DATOS] en TEMP_BUFFER


MENS_DATA BUFFER_SIZE REMOTE_BUFFER BUFFER_SIZE LOCAL_BUFFER TEMP_BUFFER+3 COPY TEMP_BUFFER TEMP_BUFFER+1 TEMP_BUFFER+2

=S

TR_DATA

LAN_TR

TR_DATA_END

=R

TR_DATA

34

El caso de LAN 10BaseT


0001

El caso de LAN 10BaseT


PROGRAMA CLIENTE WRITE
WRITE_DATA

PROGRAMA SERVIDOR

00 01

BUFR_ADR

LAN_TR

LAN_LISTEN

BUFR_ADR
Encabezado Ethernet

0001
Cola Ethernet

00 01

BUFR_ADR

El caso de LAN 10BaseT


La forma en que se transmite el mensaje a travs de Ethernet es transparente a programas cliente y servidor Esta arquitectura se conoce como arquitectura de capas

El caso de LAN 10BaseT


Cada nodo es una pila de N capas La capa i (i = 1...N) se comunica con la capa i del otro extremo, utilizando servicios de capa (i-1), accedidos a travs de interfaz

El caso de LAN 10BaseT


En nuestro caso hay tres capas:
Capa de aplicacin Capa Ethernet Capa fsica Interfaz Aplicacin-Ethernet: LAN_TR, LAN_RCV, LAN_LISTEN

Red ms complicada: IP
Se analiza ahora la red de la figura:

35

Red ms complicada: IP
Objetivo: transmitir un mensaje desde nodo cliente PLC1 a nodo servidor PLCA Problema: PLCA no tiene direccin Ethernet Solucin: protocolo que defina direcciones de forma independiente de la red; protocolo IP

Red ms complicada: IP
Direccin IP: nica a lo largo de toda la red. Consta de 32 bits agrupados por octetos Cmo llega un paquete a destino a travs de IP? Se definen tablas de ruteo en cada nodo. Entrada genrica de tabla de ruteo: Para llegar a IP X1.X2.X3.X4, transmitir a IP Y1.Y2.Y3.Y4.

Red ms complicada: IP
Resolucin de la comunicacin en la red nueva requiere que programa cliente y servidor accedan a interfaz IP y no a interfaz LAN Protocolo IP aparece en capa intermedia entre LAN y la capa de aplicacin. Utiliza los servicios de Ethernet y transmisin por puerto serie.

Red ms complicada: IP
Los protocolos de transmisin por puerto serie y Ethernet constituyen una capa inferior a la capa IP Se enumeran las modificaciones necesarias respecto del caso de transmisin a travs de LAN

Red ms complicada: IP
Modificaciones en READ y WRITE: sustituyen LAN_RCV/TR por RCV/TR_IP Modificaciones en programa servidor: LAN_RCV/TR por RCV/TR_IP, LAN_LISTEN por LISTEN_IP.

Red ms complicada: IP
Bloque RCV_IP

36

Red ms complicada: IP
Bloque TR_IP

Red ms complicada: IP
Bloque LISTEN_IP

Red ms complicada: IP
Bloques funcionales asociados a puerto serie: RX_232 y TX_232

Anlisis del cdigo WRITE


ENABLE IP_ADDR LOCAL_BUFFER BUFFER_SIZE REMOTE_BUFFER READY

WRITE

CLIENTE
WRITE_DATA RCPT_READY DATA END_TRANSFER

SERVIDOR

Anlisis de cdigo WRITE


CLIENTE
WRITE_DATA

Anlisis de cdigo WRITE


CLIENTE
RCPT_READY

SERVIDOR

ENABLE IP_ADDR LOCAL_BUFFER BUFFER_SIZE REMOTE_BUFFER

WRITE

SERVIDOR

ENABLE IP_ADDR LOCAL_BUFFER BUFFER_SIZE

WRITE

Cdigo:
ENABLE TR_WRITEDATA IP_ADDR ADDR_WRITEDATA %1 = BUFFERSIZE

READY

Cdigo:
TR_WRITEDATA_END RCV_RCPTDATA IP_ADDR TEMP_BUFFER

REMOTE_BUFFER

READY

=S

TR_WRITEDATA

=S

RCV_RCPTDATA

TR_IP

RCV_IP

RCPTDATA_END

TR_WRITEDATA_END

%1

TR_WRITEDATA_END

=R

TR_WRITEDATA

RCPTDATA_END

=R

RCV_RCPTDATA

37

Bloque TR_IP
Implementacin bloque TR_IP
Construyo paquete IP a partir de BUFFER

Ruteo IP
Qu sucede con el mecanismo de ruteo? Necesariamente recae sobre el sistema operativo El sistema operativo de cada dispositivo ejecuta LISTEN a cada puerto de comunicaciones Ejemplo de implementacin de etapa de actualizacin de entradas de un PLC con puertos serie y Ethernet

Encuentro en tabla de ruteo nodo vecino para alcanzar IP_DEST = N1 Si N1 en LAN, LAN_TR a direccin LAN de N1, con paquete en buffer Si N1 en puerto serie, TX_232

Ruteo IP

Red ms complicada: IP
PLC1 CLIENTE
TR IP(IP_PLCA,01) IP_PLCA IP_PLC1 01

PC2
WRITE_DATA = 01

PLCA SERVIDOR
01 LISTEN_IP

SI DEST PLCA TR A PLCA


IP_PLCA IP_PLC1 01 IP_PLCA IP_PLC1 01 LAN_LISTEN TX_232 RX_232

SI DEST PLCA TR A PC2


LAN_TR(PC2)

LAN

ENLACE SERIE

Red ms complicada: IP
Estructura de capas:
CAPA DE APLICACIN CAPA IP CAPA DE ENLACE DE DATOS CAPA FSICA

Red ms complicada: IP
Capa de aplicacin se comunica extremo a extremo; las dems con el vecino
PC1
A

APL IP ENL

PC2

APL IP ENL

IP ENL CAPA FSICA

38

Fragmentacin
Los mensajes tipo DATA tienen tamao variable. Este hecho determina la necesidad de fragmentacin de mensajes. Causa: tamao limitado de buffers, restricciones impuestas por los encabezados (largo paquete IP < 64kB) Fragmentacin de una capa transparente a la capa de arriba

Fragmentacin

IP ENL

PAQ IP E1 D1 E2 D2

IP ENL

PAQ IP E1 D1 E2 D2

Fragmentacin
La fragmentacin requiere de cambios en la implementacin del Daemon de ruteo IP: buffer para almacenar fragmentos intermedios en tanto no se haya completado mensaje

Mensajes perdidos: TCP


Qu sucede si se pierde un mensaje? Depende de la capa Capa de enlace: orientada a conexin; en general hay reenvo Capa IP: servicio de mejor esfuerzo. Anlogo al correo. En general, nodo IP no recibe notificacin.

Mensajes perdidos: TCP


Ejemplo: paquete IP perdido
M1 PC1 M21 M22 M2 M3

Mensajes perdidos: TCP


Resultado del ejemplo: C recibe slo mensajes 1 y 3. Cmo se resuelve sta situacin errnea? Cambio protocolo de aplicacin, incorporando esquema de numeracin con reconocimiento Esquema de reconocimiento: mensaje recib mensaje nmero N

HUB PC2

A M21 B M22 Congestin! C

M1

?
M21

M3

39

Mensajes perdidos: TCP


Recepcin de mensaje recib mensaje nmero N implica transmisin correcta desde ltimo reconocido hasta el N
CLIENTE M1 M2 M3 Timeout ACK2!!! M2 M4 SERVIDOR ACK1 M3->buffer ACK3

Mensajes perdidos: TCP


El nuevo esquema es independiente de la aplicacin. Por tanto, separo estas funciones extremo a extremo y defino una nueva capa: TCP.

Mensajes perdidos: TCP


Conclusin: aparece una nueva capa, entre la aplicacin y la IP, llamada TCP, que se comunica extremo a extremo.

Distincin aplicaciones en CL
Qu sucede si dos aplicaciones en un nodo cliente envan mensajes a un mismo nodo servidor? Distingo las aplicaciones generando un canal de comunicaciones para cada una

Distincin aplicaciones en CL
Al iniciar comunicacin la aplicacin ejecuta funcin TCP iniciar canal de comunicaciones a IP Se genera comunicacin entre TCP de origen y destino. El mdulo TCP de origen reserva un nmero especial a comunicacin entre aplicaciones: puerto.

Distincin aplicaciones en CL
Ejemplo:
CLIENTE A
Inicio Ch a N2

CLIENTE B P2
Inicio Ch a N2

SERVIDOR Solicitud de reserva LISTEN


Nuevo Ch: P1/IP_A

P1

TCP NODO 1

TCP NODO 2

Canal establecido puerto 1

RED

40

Distincin aplicaciones SERV


Esquema de capas definitivo:
CAPA DE APLICACIN CAPA TCP CAPA IP CAPA DE ENLACE DE DATOS CAPA FSICA

Distincin aplicaciones SERV


Cmo se distinguen dos aplicaciones servidoras en el mismo nodo? Asignando un nmero a cada una: puerto El puerto se asigna cuando la aplicacin servidora comienza a escuchar la red

Distincin aplicaciones SERV


Cuando una aplicacin cliente se comunica con una aplicacin en un nodo servidor, se comunica al IP del nodo y al puerto de la aplicacin

Acceso a puerto de APL SERV


Cmo hace la aplicacin cliente para saber en qu puerto escucha la aplicacin servidora? El puerto tiene que estar convenido de antemano El canal queda determinado por: Puerto origen, IP origen, Puerto destino, IP destino.

Aplicacin sobre TCP


Se enumeran las modificaciones necesarias para la transmisin sobre TCP/IP

Aplicacin sobre TCP


Modificaciones en cliente: READ y WRITE: - Inician conexin a servidor ejecutando CONNECT - Sustituyen RCV_IP por RCV_TCP - Sustituyen TR_IP por TR_TCP

41

Aplicacin sobre TCP


Modificaciones en servidor: - Sustituye LISTEN_IP por LISTEN_TCP - Sustituye RCV_IP por RCV_TCP - Sustituye TR_IP por TR_TCP

Aplicacin sobre TCP


Se agregan bloques funcionales asociados a TCP: CONNECT, LISTEN_TCP, RCV_TCP, TR_TCP.

Aplicacin sobre TCP


CONNECT y LISTEN_TCP:

Aplicacin sobre TCP


TR_TCP y RCV_TCP:
ENABLE REMOTE_PORT IP_ADDR LOCAL_PORT BUFFER_ADDR BUFFER_SIZE ENABLE REMOTE_PORT IP_ADDR LOCAL_PORT BUFFER_ADDR BUFFER_SIZE BUFFER_OW NUM_DATA READY RCV_TCP READY

TR_TCP

Anlisis del cdigo WRITE


ENABLE IP_ADDR LOCAL_BUFFER BUFFER_SIZE REMOTE_BUFFER READY

Anlisis de cdigo WRITE


ENABLE IP_ADDR LOCAL_BUFFER BUFFER_SIZE REMOTE_BUFFER READY

WRITE

WRITE

Cdigo: Inicio conexin a servidor

CLIENTE
WRITE_DATA RCPT_READY DATA END_TRANSFER

SERVIDOR

ENABLE

=S

INIT_CONNECTION

INIT_CONNECTION REMOTE_PORT IP_ADDR

CONNECT

LOCAL_PORT CONNECT_END

CONNECT_END

=R

INIT_CONNECTION

42

Anlisis de cdigo WRITE


CLIENTE
WRITE_DATA

Anlisis de cdigo WRITE


CLIENTE
RCPT_READY

SERVIDOR

ENABLE IP_ADDR LOCAL_BUFFER BUFFER_SIZE

WRITE

SERVIDOR

ENABLE IP_ADDR LOCAL_BUFFER BUFFER_SIZE REMOTE_BUFFER

WRITE

Cdigo:
CONNECT_END TR_WRITEDATA REMOTE_PORT IP_ADDR LOCAL_PORT ADDR_WRITEDATA %1 = BUFFERSIZE TR_WRITEDATA_END

REMOTE_BUFFER

READY

Cdigo:
TR_WRITEDATA_END RCV_RCPTDATA

READY

=S

=S
RCV_TCP

TR_WRITEDATA

RCV_RCPTDATA

TR_TCP

REMOTE_PORT IP_ADDR LOCAL_PORT TEMP_BUFFER TR_WRITEDATA_END %1 RCPTDATA_END RCPTDATA_END

=R

TR_WRITEDATA

=R

RCV_RCPTDATA

Aplicacin sobre TCP


Los bloques asociados a TCP acceden a los bloques IP

PLC

MODBUS/TCP

Protocolo MODBUS/TCP
TCP/IP es el protocolo de transporte ms extendido en Internet Ethernet: estndar de facto en redes empresariales. Costo de Ethernet ha bajado mucho

Protocolo MODBUS/TCP
Utilizacin de TCP/IP a nivel de planta permite integrar red empresarial con red de planta Tendencia: TCP/IP estndar de redes industriales

43

Protocolo MODBUS/TCP
Marzo de 1999: MODBUS/TCP, 1.0. Shneider Electric (MODICON). Combina: TCP/IP, Ethernet y MODBUS.

Protocolo MODBUS/TCP
Diferencias con MODBUS: - Protocolo cliente - servidor
- Diferencias en la trama de datos: encabezado distinto (Unit Id por Slave Ad; se incluye largo del mensaje) y no hay CRC.

Protocolo MODBUS/TCP
Protocolo cliente - servidor:
- El cliente establece una conexin al puerto 502 del servidor. - Una estacin MODBUS/TCP puede ser simultneamente cliente y servidor

Protocolo MODBUS/TCP
Trama de datos:
ENCABEZADO MODBUS/TCP CDIGO DE FUNCIN DATOS

Protocolo MODBUS/TCP
Encabezado MODBUS/TCP:
CAMPO LARGO DESCRIPCIN Identifica transaccin Protocolo MODBUS = 0 CLIENTE Iniciado por cliente Iniciado por cliente SERVIDOR Copiado por servidor Copiado por servidor Identificador 2B de transaccin Identificador de protocolo Largo 2B 2B

Protocolo MODBUS/TCP
Tipos de datos de MODBUS/TCP: bits y palabras (16 bits)

Identificador de unidad

1B

Nmero de bytes Iniciado por Iniciado por que siguen cliente (pedido) servidor (respuesta) Identifica esclavo Iniciado por Copiado por el RTU remoto cliente servidor

44

Protocolo MODBUS/TCP
Ejemplo de red MODBUS/TCP:

Protocolo MODBUS/TCP
Anlisis de ejemplo de red MODBUS/TCP:
- A, B, D: MODBUS/TCP. Tanto cliente como servidor. - E y F: esclavos MODBUS/RTU. Se distinguen por id. de unidad - C: maestro MODBUS/RTU.

Objetivo PLC
El objetivo de un sistema SCADA (Supervisory Control And Data Acquisition) es el control y supervisin de una planta Ejemplos de plantas: red de distribucin de energa elctrica, red de saneamiento, proceso industrial

SISTEMAS SCADA

Componentes
Un sistema SCADA consta de 5 grupos de componentes:
La instrumentacin de campo Las estaciones remotas La red de comunicaciones La estacin central de supervisin El software que se ejecuta en la estacin central de supervisin

La instrumentacin de campo
La instrumentacin de campo consta de sensores y actuadores distribuidos en la planta
Sensor: convierte magnitud fsica (caudal, velocidad, voltaje) en magnitud elctrica leda por estacin remota Actuador: dispositivo que acta sobre equipos de la planta

45

La estacin remota
La instrumentacin de campo se conecta a la estacin remota Se instala en las vecidades de equipos supervisados o controlados Puede ser:
PLC RTU (Remote Terminal Unit) Sistema de mdulos comunicndose en un plano distinto que el sistema SCADA

La red de comunicaciones
La red de comunicaciones es el medio para transferir informacin desde la estacin remota. Ejemplos:
Enlace cableado: utilizado normalmente en fbricas; no es prctico en sistemas que cubren grandes reas geogrficas Enlace telefnico: utilizado en sistemas que cubren grandes reas geogrficas (lnea dedicada o discada) Enlace de telefona celular y de radio: utilizados en puntos no accesibles lneas telefnicas

La estacin de supervisin
Estacin de supervisin es la unidad maestra del sistema SCADA Dos funciones principales:
Recibir informacin de las estaciones remotas y generar acciones segn eventos detectados Interfaz hombre mquina, del sistema al operador (MMI - Man Machine Interface)

Conexin de los componentes

Las estaciones centrales de supervisin pueden estar dispuestas en red, para intercambio de informacin de distintos sistemas SCADA

Ejemplo

Software de unidad central


Se denomina igual que el sistema: sistema SCADA o SCADA Realiza muchas tareas Las tareas se organizan verticalmente en capas, de modo que cada capa brinda servicios a la capa por encima El acceso de la capa A a los servicios de la capa B se realiza por la interfaz entre ambas

46

La arquitectura del software del SCADA

Software de unidad central


Comentarios a figura de arquitecura:
Cada capa realiza varias funciones Flechas verticales: interfaces entre capas adyacentes Flechas horizontales: interfaces entre funciones de una misma capa Flechas bidireccionales: acceso de lectura escritura

Software de unidad central


Plataforma de adquisicin de datos:
manejo de entrada salida de datos de la planta utiliza servicio la capa fsica, que es la red de comunicaciones

Software de unidad central


Plataforma de datos
Manipulacin de datos: transformacin de datos adquiridos de la interfaz con plataforma de adquisicin a formato interpretable por aplicaciones de la plataforma de datos y de la capa MMI Almacenamiento de datos: muestreo y almacenamiento de datos en arhcivos de histrico Control: aplicacin automtica de algoritmos de control del proceso Alarma: reconocimiento y reporte inmediato de eventos predefinidos

Software de unidad central


MMI: interfaz al usuario. Funciones:
Monitorizacin: despliegue de datos en tiempo real Control de supervisin: permite al operador la modificacin de parmetros de la planta desde la estacin central Reporte de datos: exportacin de archivos de histrico a archivos en formatos tiles para anlisis posterior

Operacin del software SCADA

47

Operacin del software SCADA


Adquisicin de datos: tarea I/O driver Plataforma de datos, exceptuando almacenamiento: SAC (Scan, Alarm, Control) Interfaz I/O driver - SAC: Driver Image Table Interfaz SAC MMI: Base de datos

Operacin del software SCADA


Adquisicin de datos:
Hardware: interfaz al bus de campo (por ej. puerto serie o tarjeta instalada en zcalo de estacin central) Software I/O Driver: se comunica con unidad remota por protocolo de comunicaciones

Operacin del software SCADA


Driver Image Table:
se puede pensar como un conjunto de casilleros, que definen imgenes de las memorias de las estaciones remotas Cada casillero se denomina poll record, y contiene un nico dato o datos contiguos en memoria de estacin remota Se actualiza cclicamente (poll time)

Operacin del software SCADA


El SAC tiene las siguientes funciones:
- Lee los datos del Driver Image Table (interfaz con la plataforma de adquisicin de datos). - Traduce los datos a formato de la base de datos - Compara los datos con lmites de alarma, y genera mensajes de alarma. - Ejecuta la lgica de control - Deteccin de excepciones - Cumple con los pedidos de escritura de datos en el Driver Image Table (datos a ser transmitidos a la unidad remota). Estos pedidos corresponden a las tareas de la misma capa y de capas superiores

Operacin del software SCADA


Base de datos:
Representacin del proceso Se crea uniendo bloques de lgica de control de proceso
Bloques primarios Bloques secundarios

Otros Temas
La interfaz entre las capas Programacin Sistemas en Red Conexin con los Sistemas de Informacin de la planta

48

Introduccin PLC
ST (Structured Text) es el quinto lenguaje definido en norma IEC 1131-3. Lenguaje de texto de alto nivel, con sintaxis similar a la de Pascal Lenguaje pequeo: 40 palabras reservadas y 10 tipos de sentencias. Existen menos implementaciones de ST respecto de LD; casi todas basadas en IEC 1131-3.

LENGUAJE ST

Estructura de programa
Un programa ST consiste en un conjunto de sentencias Cada sentencia contiene expresiones vlidas ST

Operadores de expresiones
Una expresin resulta en un nico valor. Se compone de operadores y operandos

Operadores de expresiones
Operadores:
Parntesis: () Invocacin a funcin: identificador(args) Exponente: ** Aritmticos: +, -, / , *, MOD Comparacin: <, >, <=, >=, =, <> Booleanos: NOT, AND, OR, XOR

Operadores de expresiones
Ejemplo operadores booleanos: Var1:=(Var1 AND Var2) OR Var3 Ejecucin:
(1) (VAR1 AND VAR2) (2) OR de resultado de (1) con Var3 (3) Asignacin de resultado en (2) a Var1

49

Sentencias
Se definen los siguientes tipos:
Comentario Asignacin Invocacin a bloque funcional Retorno Seleccin Iteracin

Sentencias: Comentarios
Comentarios: se sitan entre smbolos (* y *). Ejemplo:
(* Este es un comentario *)

Sentencias: Asignacin
Asignacin: transferencia del valor de expresin vlida a una variable. Ejemplos: A:= B; C:= C+1; VAR := 7; VAR:= VAR * 10; Y:= COS(X) + 12;

Sentencias: Bloque funcional


Invocacin a bloque funcional: tiene dos partes
definicin de instancia del bloque funcional en seccin de definicin de variables nombre de instancia de bloque seguido de lista de asignaciones de entrada entre parntesis

Una salida de un bloque funcional se refiere por direccin en formato


nombre_bloque_funcional.nombre_salida

Sentencias: Bloque funcional


Ejemplo de invocacin a instancia de Bloque Funcional:
Nombre de instancia: FUN Entradas: IN1, IN2, IN3 Salidas: OUT1, OUT2, OUT3 FUN(IN1:=1, IN2:=B, IN3:= %IW2.3); FOO := FUN.OUT1; BAR := FUN.OUT2;

Sentencias: Retorno
Sentencia Return: termina una funcin o un programa ST. Por ejemplo, la funcin que incluye esta sentencia termina si A>B:
IF A>B THEN RETURN; END_IF;

50

Sentencias de seleccin
Existen dos tipos de sentencias de seleccin:
IF .. THEN .. ELSE .. END_IF CASE .. OF

Sentencias de seleccin
Sentencia IF: ejecucin de instrucciones de acuerdo al valor de una expresin booleana (TRUE o FALSE). Sintaxis:
IF <expresin booleana 1> THEN <Instrucciones IF> ELSEIF <expresin booleana 2> THEN <Instrucciones ELSEIF 1> ... ELSEIF <expresin booleana 3> THEN <Instrucciones ELSEIF n-1> ELSE <Instrucciones ELSE> END_IF;

Sentencias de seleccin
Ejemplo sentencia IF:
IF A=3 THEN B:=7; END_IF

Sentencias de seleccin
Sentencia CASE: ejecucin condicionada al valor de una variable. Sintaxis:
CASE <Var1> OF <Valor1>: <Instruccin 1> <Valor3,Valor4>: <Instruccin 3> <Valor5..Valor6>: <Instruccin 4> ... <Valor n>: <Instruccin N> ELSE <Instruccin ELSE> END_CASE;

Sentencias de seleccin
Ejemplo sentencia CASE:
CASE INT1 OF 1: BOOL1 BOOL3 2: BOOL2 BOOL3 ELSE BOOL6 BOOL7 END_CASE := := := := TRUE; FALSE; FALSE; TRUE;

Sentencias de iteracin
Existen 3 tipos de sentencias de iteracin:
FOR .. DO WHILE .. DO REPEAT .. UNTIL

La sentencia EXIT finaliza la ejecucin de una iteracin

:= NOT BOOL1; := BOOL1 OR BOOL2;

51

Sentencias de iteracin
El bucle FOR se utiliza para programar procesos que se repiten. Sintaxis:
INT_Var: INT; FOR INT_Var:=<VALOR_INICIAL> TO <VALOR_FINAL> {BY <PASO>} DO <Instrucciones> END_FOR;

Sentencias de iteracin
Ejecucin bucle FOR:
<Instrucciones> se ejecutan mientras que el contador INT_VAR no es mayor que <VALOR_INICIAL> Condicin de finalizacin se verifica antes que la ejecucin de <Instrucciones> Cada vez que se ejecutan instrucciones, se incrementa el valor de la variable INT_VAR en el valor de <PASO>.

Sentencias de iteracin
Ejemplo FOR. Si el valor inicial de VAR1 es 1, el valor al finalizar la ejecucin del bucle FOR es 32: FOR Contador:=1 TO 5 BY 1 DO Var1:=Var1*2; END_FOR;

Sentencias de iteracin
Ejemplo FOR/EXIT: si el valor inicial de VAR1 es 1, el valor al finalizar la ejecucin del bucle FOR es 8: FOR Contador:=1 TO 5 BY 1 DO Var1:=Var1*2; IF Var1 > 5 THEN EXIT; END_IF END_FOR;

Sentencias de iteracin
Evitando bucles infinitos FOR: el VALOR_FINAL debe pertenecer al rango del contador.

Sentencias de iteracin
En el bucle WHILE, la condicin de terminacin puede ser cualquier condicin booleana. El bucle termina si la condicin de terminacin resulta FALSE. Sintaxis: WHILE <Expresin booleana> <Instrucciones> END_WHILE;

52

Sentencias de iteracin
Ejecucin bucle WHILE:
<Instrucciones> se ejecutan cclicamente mientras que <Expresin booleana> devuelve TRUE En cada iteracin, <Expresin booleana> se evala antes de la ejecucin de instrucciones. Observacin: Nunca se ejecuta <Instrucciones> si < Expresin booleana > devuelve FALSE en la primer iteracin.

Sentencias de iteracin
Evitando bucles infinitos WHILE: si <Expresin booleana> nunca toma valor FALSE, las <Instrucciones> se repiten indefinidamente, resultando en un bucle infinito. Para eliminar la posibilidad de bucles infinitos, se puede utilizar un contador auxiliar: WHILE Contador<>0 DO Var1 := Var1*2; Contador := Contador 1; END_WHILE

Sentencias de iteracin
El bucle REPEAT: se diferencia de WHILE en que la verificacin de condicin de salida es posterior a la ejecucin del bucle, y no anterior Sintaxis: REPEAT <Instrucciones> UNTIL <Expresin booleana> END_REPEAT;

Sentencias de iteracin
Ejecucin bucle REPEAT:
<Instrucciones> se ejecutan cclicamente mientras que <Expresin booleana> devuelve TRUE En cada iteracin, <Expresin booleana> se evala antes de la ejecucin de instrucciones.

Observacin: <Instrucciones> se ejecutan una sola vez si <Expresin booleana> es TRUE en la primer evaluacin Observacin:El bucle REPEAT siempre se ejecuta al menos una vez.

Sentencias de iteracin
Evitando bucles infinitos REPEAT: si <Expresin booleana> nunca toma valor FALSE, las <Instrucciones> se repiten indefinidamente, resultando en un bucle infinito. Para eliminar la posibilidad de bucles infinitos, se puede utilizar un contador auxiliar:
REPEAT Var1 := Var1*2; Contador := Contador 1; UNTIL Contador<0 END_REPEAT

Ejemplo
Se desea escribir un programa que controle el encendido - apagado de una bomba. La bomba ser encendida si: 1) Se pulsa el botn de arranque. 2) La proteccin trmica est deshabilitada. 3) Est abierto el botn de emergencia. 4) Est abierto el botn de parada. Desde un tiempo T despus del encendido, no puede haber ni sobre corriente ni baja corriente. Expresado de otra forma, desde un tiempo T despus del arranque, la corriente I debe cumplir IMIN < I < IMAX, siendo IMIN e IMAX lmites prefijados.

53

Ejemplo
El motor de la bomba se apagar si:

Ejemplo en ST - 1
(* Inicializacin *) IF (NOT CICLOINI_FLAG) THEN

1) Se pulsa el botn de parada. 2) Se cierra la proteccin trmica. 3) Se pulsa el botn de emergencia. 4) Los lmites de corriente no son los correctos.

ESTADO_APAGADO := TRUE; ESTADO_TRANSITORIO := FALSE; ESTADO_ENCENDIDO := FALSE; CICLOINI_FLAG := TRUE; END_IF;

Ejemplo en ST - 2
TIMER1 (E := ESTADO_TRANSITORIO, T := DELAY ); TIMEOUT_TIMER1 := TIMER1.A; IF (ESTADO_APAGADO AND ARRANQUE) THEN ESTADO_TRANSITORIO := TRUE; BOMBA_ON := TRUE; ESTADO_APAGADO := FALSE; ELSIF (ESTADO_APAGADO AND (NOT ARRANQUE)) THEN BOMBA_ON := FALSE;

Ejemplo en ST - 3
ELSIF (ESTADO_TRANSITORIO AND (TERMICO OR ALARMA OR PARADA)) THEN ESTADO_TRANSITORIO := FALSE; BOMBA_ON := FALSE; ESTADO_APAGADO := TRUE; ELSIF (ESTADO_TRANSITORIO AND TIMEOUT_TIMER1) THEN ESTADO_TRANSITORIO := FALSE; ESTADO_ENCENDIDO := TRUE;

Ejemplo en ST - 4
ELSIF (ESTADO_ENCENDIDO AND (TERMICO OR ALARMA OR PARADA OR (CORRIENTE > CORRIENTE_MAX) OR(CORRIENTE<CORRIENTE_MIN))) THEN ESTADO_ENCENDIDO := FALSE; BOMBA_ON := FALSE; ESTADO_APAGADO := TRUE; END_IF; (* END_IF termina sentencia IF para el diagrama de estados *)

Ejemplo en ST - 5
Declaracin de variables del programa: VAR DELAY AT %MD4000.1: TIME := T#5s;

(* De acuerdo a ayuda de ESV, DELAY es tipo TIME. *) (* De acuerdo a la seccin Variables of S40..50 en Data types and variables for S40..50 de la ayuda del AC1131, el rango KD00,00 .. KD07,15 se corresponde con %MD4000.00 .. %MD4007.15, y se asigna a tipo DINT / TIME *)

54

Ejemplo en ST - 6
(* Continuacin de declaracin de variables *) TIMER1: ESV; ESTADO_APAGADO AT %MX0.0: BOOL; ESTADO_TRANSITORIO AT %MX0.1: BOOL; ESTADO_ENCENDIDO AT %MX0.2: BOOL; TIMEOUT_TIMER1 AT %MX0.3: BOOL; CORRIENTE_MAX AT %MW3001.0: INT := 120; (* KW00,00 .. KW31,15 -> %MW3000.00 .. %MW3031.15 *) CORRIENTE_MIN AT %MW3001.1: INT := 50; END_VAR

Ejemplo en ST - 7
Declaracin de variables globales: VAR_GLOBAL ARRANQUE AT %IX62.0 : BOOL; PARADA AT %IX62.1 : BOOL; ALARMA AT %IX62.2 : BOOL; TERMICO AT %IX62.3 : BOOL; (* ... *) BOMBA_ON AT %QX62.2 : BOOL; CORRIENTE AT %IW1062.1 : INT; (* ... *) CICLOINI_FLAG AT %MX255.15 : BOOL; END_VAR

Sentencias de iteracin
Restricciones lenguaje ST para series 40..50:
Rango limitado de operadores Rango limitado de tipos de datos No existen las siguientes instrucciones: CASE, FOR, WHILE, REPEAT, EXIT.

ST Series 40..50 en manual


Entradas relevantes en el manual AC1131. En pestaa Contenido
Restricciones:
907 AC1131 peculiarities and restrictions for S40..50 Data types and variables for S40..50 Operators and blocks for S40..50

Aspectos de programacin de series S40..50:


System Technology of basic units series S40..50. En pestaa contenido. En particular, en el tpico "Operands of the basic units S40..50 se describe el espacio de memoria.

Introduccin PLC
Arquitectura hasta ahora consiste en ejecucin cclica de programa, con tres fases:
Lectura de entradas Ejecucin de programa Actualizacin de salidas

ARQUITECTURA DEL PLC SEGN IEC 1131-1

La ejecucin del programa puede alterarse slo por una interrupcin

55

Introduccin
Por avance continuo del hardware, la IEC1131 define arquitectura ms avanzada que la considerada hasta el momento La arquitectura se basa en la programacin jerrquica, con 4 niveles:
Configuracin Recursos Tareas Programas

Introduccin
Configuracin define:
recursos datos compartidos por los recursos datos accesibles desde exterior del PLC

Recurso define:
tareas datos compartidos por todos los programas datos de recurso accesibles desde exterior del PLC programas que ejecutan las tareas del recurso

Introduccin
Tarea define:
Programas asociados a la tarea Condicin de disparo Prioridad

La Tarea
Tarea tiene asociado al menos un programa Los programas asociados a una tarea se ejecutan cada vez que se dispara la tarea Condicin de disparo puede ser:
Intervalo peridico de tiempo expresado en mseg (tarea tiene un ciclo asociado, anlogo al del PLC) Evento

Los programas se organizan sobre unidades POU (Program Organizational Unit)

La Tarea
Cada tarea tiene asignada una prioridad (nmero 1 a n), de modo que:
1 indica prioridad mxima; tarea de prioridad 1 no puede ser interrumpida por otra tarea Tarea de prioridad n+1 puede ser interrumpida por tarea de prioridad n Tareas de igual prioridad se ejecutan secuencialmente

La Tarea
Ejemplo: declaracin de tareas lab 2 (se observa la simplificacin de la programacin):
Task Configuration: TAREA1(PRIORITY:=1,INTERVAL:=T#100ms) PWM TAREA2(PRIORITY:=2,INTERVAL:=T#1sec); CONTROL

56

Las POU
Hay tres tipos de POU (Program Organizational Unit):
Programa propiamente dicho Bloques funcionales Funciones o procedimientos

Las POU
Programas:
Se ejecutan al dispararse una tarea Un programa puede llamar a funciones e instancias de templates de bloques funcionales Un programa no puede llamar a otro programa

Las POU
Funciones:
Aceptan mltiples parmetros de entrada Salida nica Por ej., la funcin FuncionEjemplo devuelve una variable tipo WORD: FUNCTION FuncionEjemplo: WORD

Las POU
Bloques funcionales:
Se definen sobre la base de templates de bloques Template de bloque: programa que define el bloque Para utilizar un template de bloque, la tarea declara una instancia del template

Las POU
Diferencia entre bloque funcional y funcin:
Nmero de salidas:
Funcin permite slo una salida Bloque funcional permite ms de una

Variables
En lo que va del curso cada variable se asocia a una direccin de memoria fija Una variable puede ser:
Global: se define al nivel de configuracin, de recurso; las variables globales de un recurso son accesibles desde todo POU del recurso Local: variable automtica, local al POU

Variables permanentes (conservan valor entre ejecuciones):


Funcin no Bloque funcional s

En el ejemplo de 2 tareas, la nica variable global necesaria es la salida del control

57

Variables
Variables globales incluyen las variables con direccin de memoria asignada, accesibles desde fuera del PLC: variables representadas de forma directa

Variables
Declaracin genrica de variable: NombreVar [AT %DireccinVar] : TipoDeDato [::= ValorInicial];

AT %DireccinVar se usa para variables representadas de forma directa

Variables
DireccinVar: [Cdigo letras] [Cdigo nmeros]

Variables
Cdigo de letras: distingue el tipo de dato Primer letra: - I/E: Direccin E - Q/O: Direccin S - M: Direccin dato interno

Variables
Segunda letra: - X: bit - B: byte (8 bits) - W: word (16 bits) - D: double word (32 bits) - L: long word (64 bits)

Variables
Tipo de dato: uno de los tipos de dato reconocido por IEC 1131-3:
INT: entero con signo de 16 bits (prefijo S, D, L cambia tamao) BOOL: Bit BYTE, WORD, DWORD, LWORD REAL, LREAL: punto flotante (32 bit, 64 bit) TIME, DATE, TIME_OF_DAY, DATE_AND_TIME STRING Tipo de datos derivado (STRUCT, ARRAY)

58

Variables
Ejemplos tipos derivados por el usuario:
TYPE my_array ARRAY [1..3] OF INT; END_TYPE TYPE my_struct STRUCT speed : INT position : my_array END_STRUCT END_TYPE

59

Вам также может понравиться