You are on page 1of 59

Historia de los PLC

PLC

INTRODUCCIN

Primer controlador programable:


MODICON, a fines de los 60
Objetivo: sustituir la lgica de rel
Lgica de rel:


Historia de los PLC

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

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:

Circuitos lgicos basados en contactores,


rels y temporizadores discretos
Utilizada para automatizacin de procesos
secuenciales en ambientes industriales

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.

Historia de los PLC


- Nuevo cableado del PLC:

- Nuevo cableado con lgica de rel:




Ventajas:



Historia de los PLC




La capacidad de los PLCs se ampla


en la dcada de los 70:


Dcada de los 80:




Historia de los PLC




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


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).

cambio de hardware por software


flexibilidad

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 90:





386 de INTEL y 68000 de Motorola


Estandarizacin de protocolos de
comunicaciones y lenguaje

Historia de los PLC




Estndar de lenguajes: 1131-3.

Historia de los PLC




- No se utiliza en forma amplia.


- Se definen 5 lenguajes.

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

Dentro de un PLC


Un PLC se compone de un CPU, memoria


y entradas/salidas.
Diferencias con PC:

- Presentan aislacin ptica.


- Normalmente se manejan con baja tensin de
continua.

- 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


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.

Las entradas digitales del PLC se conectan


a las entradas fsicas del proceso.

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

- 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

Memoria E/S se actualiza con E/S.

Estructura de la memoria:

Tipos de datos de un PLC




Las localidades de la memoria


accesible se agrupan formando
datos

Tipos de datos de un PLC




Hay cuatro tipos de datos


-

Datos binarios (1 bit)


Palabras (2 bytes)
Palabras dobles (4 bytes)
Flotantes

Direcciones de los datos




Un dato del PLC se refiere por su


direccin
Direcciones:

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




Direccin:
[Cdigo letras] [Cdigo nmeros]

- Entrada
- Salida
- Datos internos (memoria
Lectura/Escritura)

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 los datos

Direcciones de datos binarios

Direcciones de palabras

- Internos: M XX.YY
- Entradas: I XX.YY
- Salidas: O XX.YY

Mapeo de extensiones y
unidades remotas en memoria

Direcciones de los datos




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 palabras dobles

- Internas: MD XX.YY
- Constantes (LAB): KD XX.YY

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

PLC

de

LADDER

Porqu LADDER?



Porqu LADDER?

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

Porqu LADDER?


Con PLC:

Porqu LADDER?


Porqu LADDER?


Con PLC:

Cambio conexin paralelo a serie


requiere recableado

Ejemplo 2 lgica de rels: encendido de


motor con rel intermedio

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?


Porqu LADDER?

Programas LD ejemplo 1:

Estructura programa LD



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)

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

Programa LD ejemplo 2:

Los escalones se ejecutan de arriba


hacia abajo
Cada escaln se ejecuta de izquierda a
derecha

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

Instrucciones con BITs




AND
(Conexin
serie)

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

OR
(Conexin
Paralelo)

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

Contacto directo:



Contacto invertido:



Instrucciones con BITs




Bobina directa:




Funcin inversa de Direct coil

SET (o LATCH):





Ejemplo BOBINA vs SET/RESET:


contador de pulsos electromagnticos


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

RESET (o UNLATCH):



Instrucciones con BITs

Contacto normalmente cerrado


Verdadero si bit vale 0

Instrucciones con BITs

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

Bobina invertida:

Contacto normalmente abierto


Verdadero si bit vale 1

Si el escaln es 1 escribe 0 en el bit


Si el escaln es 0 no hace nada

Instrucciones con BITs




Solucin con SET:

Solucin con Direct Coil

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

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

Bloques funcionales



Rango de cuenta: depende de fabricante. En


PLCs de laboratorio:



CTU cuenta desde 0 a 32767


VRZ cuenta desde -32768 a 32767

Contadores: Ejemplo

Las entradas y salidas son datos. El tipo de


dato de cada una depende del bloque.

Contadores





El identificador describe funcin del bloque


Ejemplo: bloque funcional que implementa la
funcin FUN, con dos entradas y dos salidas

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

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

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

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


Shift Registers


Entradas de instruccin SHIFT:












Shift Registers


Operaciones ROT/ROTC de 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

Salidas de instruccin SHIFT:





Salida CY_A (bit): valor final de carry flag


Salida A (W o DW): resultado de la operacin

Shift Registers


Bloque funcional asociado a instruccin SHIFT:

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:


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:







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.

Instrucciones de entrada: evalan si el


escaln es verdadero o falso
Instrucciones de salida: se ejecutan segn
resultado del escaln

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
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

Transiciones

X_TRANSITORIO

S
S

X_APAGADO

Ejemplo

X_TRANSITORIO

SALIDA_TIMER

X_ENCENDIDO

S
S

X_TRANSITORIO

PARADA

Apagado

X_TRANSITORIO

Apaga bomba

S
S
ALARMA

ARRANQUE and
(NO PARADA) and
(NO ALARMA) and
(NO TERMICO)

PARADA or
ALARMA or
TERMICO

X_ENCENDIDO

R
PARADA

X_ENCENDIDO

TERMICO

Enciende bomba
Enciende timer

ALARMA

Transitorio

PLC

X_APAGADO

TERMICO

EL AC31GRAF

X_APAGADO

S
S

X_ENCENDIDO

R
ERROR

SALIDA_TIMER = 1

Encendido

ERROR or
PARADA or
ALARMA or
TERMICO

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

X_APAGADO

BOMBA_ON

X_TRANSITORIO

BOMBA_ON

Acciones

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.

El Project Manager






Los proyectos se manejan desde el Proyect


Manager.
Para abrir: Open
Para crear nuevo proyecto: New
Un proyecto puede tener:

La unidad de programacin


Manejo de proyecto modular




Hay tres tipos de mdulos:


- Programa
- Subrutina
- Interrupcin: de hardware o de
tiempo

Desde Program
proyecto.
Permite:
-

- Ms de un mdulo (modular)
- Un nico mdulo (main)

Manejo de proyecto modular

La compilacin del proyecto resulta


en un ejecutable.

Management

del

abrir, crear mdulos


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

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




Proyecto de mdulo nico

Ejecucin del programa se sigue


desde la ventana debug

Editores de programas



Cada lenguaje de programacin tiene su editor


Un mdulo se edita bajo el editor de su
lenguaje

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

Los editores del paquete son:


-

Editores de programas


Se trabaja desde el editor del


mdulo main

Editor
Editor
Editor
Editor

FBD/LD
IL
Quick LD
SFC

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




Figura 1-2

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.

Ejemplo


Grupos de instrucciones

En LD, el programa anterior queda:




El 90% de los programas se resuelve


con el 20% de las instrucciones.

18

Grupos de instrucciones

Grupos de instrucciones

Clasificacin:

Funciones binarias:
- Entradas salidas de tipo binario
- Ejemplos: AND, OR, XOR,

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.

- Se permite cambiar el nmero de

Grupos de instrucciones

Grupos de instrucciones

=S (LATCH), =R (UNLATCH)
entradas de ciertos bloques

- Las variables pueden ser negadas

Funciones de Timer y Contadores

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

- Incluyen timers, contadores,


monoestables, etc.

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


Grupos de instrucciones


Funciones de control de programa.


Ejemplos:

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

- Jump: salto condicional. Una buena


estructura FBD lo evita.
- DI y DO: lectura/escritura inmediata de
entrada o salida,respectivamente.
Y=

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

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:

Estructura de programa en IL


Se permiten labels y comentarios (


entre (* y *))

1) Un operador,
2) Opcionalmente modificadores
3) Uno o ms operandos, separados por
,

Ejemplos de instrucciones IL

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

Operador

Operando

Comentario

Inicio:

LD
ANDN

BOTON
%I62.02

ST

INIC_MOTOR

(*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




Label

Se llaman mediante una de las


sentencia CAL o la sentencia !BA 0

Modificadores de operadores



N=Negacin booleana del operador


C=Ejecucin de instruccin
condicional al valor del registro IL

Ejemplo: llamado a TIMER:

CAL ESV(DISPARO,TIEMPO_DELAY,SALIDA)

21

Introduccin


PLC

SFC

Secuencia de ejecucin en SFC

Introduccin


Reglas:


El SFC es un lenguaje basado en


operaciones secuenciales
Programa en SFC: secuencia de
pasos, transiciones y saltos

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:

Ejemplo


La bomba ser encendida si:


-

Se pulsa botn de arranque


Proteccin trmica deshabilitada
Botn de emergencia abierto
Botn de parada abierto

22

Ejemplo


Ejemplo

Despus de un tiempo T a partir del


encendido no puede ni sobre ni
baja corriente

Apagado:
-

Ejemplo: Nivel 1

Se pulsa botn de parada


Salta proteccin trmica
Se pulsa botn de emergencia
Se pasa uno de los lmites de
corriente

Ejemplo


Elementos nuevos:
- Divergencia simple
- Salto

Ejemplo


Nivel 2 del Programa:

Ejemplo


PASO 1 (*BOMBA APAGADA*):


BOMBA_ON(R);


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

TRANSICIN 1:

23

Ejemplo


TRANSICIN 4: (*CONDICIN DE
PARADA PRECIPITADA*)

Ejemplo


Ejemplo


TRANSICIN 3 (*CONDICIN DE
PARADA):

Componentes SFC


Representacin:

Componentes bsicos:
-

El Paso


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;

pasos
pasos iniciales
transiciones
saltos a pasos

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




El Paso Inicial



Un programa comienza en el paso inicial.


El paso inicial se representa:

Accin tipo N (non-stored):


ACTION (N):
(* Instrucciones IL *)
END_ACTION;

La transicin


Representacin:

25

La transicin




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

Salto

Lenguajes en que se programa:

Representacin:

- QUICK LD (un solo rung)


- IL (resultado = valor final de registro IL)

Convergencias/Divergencias
Simples

Divergencias y convergencias


Las Divergencias / Convergencias pueden


ser Simples o Dobles

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:

Introduccin


Principios bsicos de la comunicacin:




Conexin directa en lazos de


corriente (4-20 mA; seal analgica a
conversor A/D)
 Comunicaciones digitales


Introduccin


Modelo de comunicacin digital serial:

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


Operacin de comunicacin digital serial:







Llave cerrada -> transmite 1 lgico


Llave abierta -> transmite 0 lgico
Estado de reposo: 1 lgico
Transmisin de un byte:




Introduccin


Estados:

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


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

Introduccin


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

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:


Redes Fsicas


Red Multidrop RS 485:

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.

29

Redes Fsicas


Protocolo MODBUS

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


Mensaje genrico enviado por el


maestro:

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.


Funciones:
-

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

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


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


Protocolo MODBUS


Requisitos para lectura o escritura


de variables del PLC:

Protocolo MODBUS


- Conocer direcciones a las que se


accede
- Fijar en PLC el nmero de esclavo

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.

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

INTRODUCCIN A
TCP/IP

Objetivo: en base a un ejemplo


- Explicar conceptos bsicos de
arquitectura de capas
- Explicar funciones de las distintas
capas de 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

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):






Se presentan elementos que intervienen en


las comunicaciones con transporte TCP/IP

Protocolo de aplicacin


Nodos se conectan a travs de LAN


Ethernet 10BaseT
Descripcin de Ethernet 10BaseT:

Ejemplo de comunicacin:

CLIENTE

SERVIDOR
WRITE_DATA
RCPT_READY
DATA

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)

El caso de LAN 10BaseT




Ejemplo TCP/IP: Planteo

END_TRANSFER

El caso de LAN 10BaseT




Ejemplo Ethernet:

- Consiste de nodos y hubs


- Conexiones: 5 cables terminados en RJ-45
- Un hub tiene varias bocas; repetidor por
difusin

32

El caso de LAN 10BaseT




Medio Ethernet: protocolo IEEE 802.3

El caso de LAN 10BaseT




- medio de difusin
- colisiones; deteccin y retransmisin
- cada nodo se identifica de forma nica


- 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:
(utilizado por servidor para
escuchar la red)

Implementacin de protocolo de
aplicacin sobre LAN:

El caso de LAN 10BaseT




Bloques Ethernet:

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

WRITE

LAN_ADDR
LOCAL_BUFFER
BUFFER_SIZE
REMOTE_BUFFER

READY

CLIENTE

SERVIDOR
WRITE_DATA
RCPT_READY
DATA
END_TRANSFER

Anlisis de cdigo WRITE


CLIENTE

WRITE_DATA

SERVIDOR

ENABLE
LAN_ADDR

Anlisis de cdigo WRITE

WRITE

CLIENTE

RCPT_READY

SERVIDOR

LOCAL_BUFFER

=S

TR_WRITEDATA

READY

TR_WRITEDATA

REMOTE_BUFFER

Cdigo:
TR_WRITEDATA_END
RCV_RCPTDATA

LAN_TR

LAN_ADDR

=S

TR_WRITEDATA_END

LAN_RCV

%1

=R

TR_WRITEDATA

CLIENTE

SERVIDOR
DATA

ENABLE
LAN_ADDR

RCPTDATA_END

=R

RCPTDATA_END

Anlisis de cdigo WRITE


WRITE

CLIENTE

SERVIDOR
DATA

REMOTE_BUFFER

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


en TEMP_BUFFER

2) Envo mensaje en TEMP_BUFFER


RCPTDATA_END

TEMP_BUFFER

BUFFER_SIZE

TEMP_BUFFER+1

LAN_ADDR

TEMP_BUFFER+2

TEMP_BUFFER

COPY

LAN_ADDR

WRITE

BUFFER_SIZE
READY

MENS_DATA

REMOTE_BUFFER

ENABLE
LOCAL_BUFFER

BUFFER_SIZE

Cdigo:

RCV_RCPTDATA

Anlisis de cdigo WRITE

LOCAL_BUFFER

LOCAL_BUFFER

RCV_RCPTDATA

TEMP_BUFFER

TR_WRITEDATA_END

%1 = BUFFERSIZE

BUFFER_SIZE

READY

LAN_ADDR

ADDR_WRITEDATA

1)

WRITE

BUFFER_SIZE

REMOTE_BUFFER

ENABLE

LAN_ADDR
LOCAL_BUFFER

BUFFER_SIZE

Cdigo:

ENABLE

TR_DATA

=S

READY

TR_DATA

LAN_TR

BUFFER_SIZE+3
TR_DATA_END

REMOTE_BUFFER

TR_DATA_END

=R

TR_DATA

TEMP_BUFFER+3

34

El caso de LAN 10BaseT

El caso de LAN 10BaseT


PROGRAMA CLIENTE WRITE
WRITE_DATA

00
01

PROGRAMA SERVIDOR

BUFR_ADR

0001

LAN_TR

LAN_LISTEN

0001

BUFR_ADR
Encabezado

Cola Ethernet

Ethernet

00
01

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




En nuestro caso hay tres capas:

BUFR_ADR

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

Red ms complicada: IP


Se analiza ahora la red de la figura:

Capa de aplicacin
 Capa Ethernet
 Capa fsica
Interfaz Aplicacin-Ethernet: LAN_TR,
LAN_RCV, LAN_LISTEN


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


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


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


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


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


Bloque RCV_IP

36

Red ms complicada: IP


Red ms complicada: IP

Bloque TR_IP

Red ms complicada: IP


Bloque LISTEN_IP

Anlisis del cdigo WRITE


ENABLE

Bloques funcionales asociados a puerto


serie: RX_232 y TX_232

WRITE

IP_ADDR
LOCAL_BUFFER
BUFFER_SIZE
REMOTE_BUFFER

READY

CLIENTE

SERVIDOR
WRITE_DATA
RCPT_READY
DATA
END_TRANSFER

Anlisis de cdigo WRITE


CLIENTE

WRITE_DATA

SERVIDOR

ENABLE
IP_ADDR

Anlisis de cdigo WRITE

WRITE

CLIENTE

RCPT_READY

SERVIDOR

LOCAL_BUFFER
REMOTE_BUFFER

ENABLE
TR_WRITEDATA

=S

TR_WRITEDATA

REMOTE_BUFFER

Cdigo:
TR_WRITEDATA_END

=S

READY

RCV_RCPTDATA

RCV_IP

IP_ADDR

ADDR_WRITEDATA

TEMP_BUFFER

%1 = BUFFERSIZE

TR_WRITEDATA_END

WRITE

BUFFER_SIZE
READY

RCV_RCPTDATA

TR_IP

IP_ADDR

IP_ADDR
LOCAL_BUFFER

BUFFER_SIZE

Cdigo:

ENABLE

=R

TR_WRITEDATA_END

%1

TR_WRITEDATA

RCPTDATA_END

RCPTDATA_END

=R

RCV_RCPTDATA

37

Bloque TR_IP


Implementacin bloque TR_IP




Construyo paquete IP a partir de BUFFER

Ruteo IP






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

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

Red ms complicada: IP
PLC1

PC2

PLCA

WRITE_DATA = 01

CLIENTE

SERVIDOR
01

TR IP(IP_PLCA,01)

LISTEN_IP
IP_PLCA IP_PLC1 01

SI DEST PLCA
TR A PLCA
IP_PLCA IP_PLC1 01

SI DEST PLCA
TR A PC2

IP_PLCA IP_PLC1 01

LAN_TR(PC2)

LAN_LISTEN

TX_232

LAN

Red ms complicada: IP


Estructura de capas:

RX_232

ENLACE SERIE

Red ms complicada: IP


Capa de aplicacin se comunica extremo a


extremo; las dems con el vecino

CAPA DE APLICACIN

PC1

CAPA IP

APL

PC2

APL

IP

IP

IP

ENL

ENL

ENL

CAPA DE ENLACE DE DATOS


CAPA FSICA

CAPA FSICA

38

Fragmentacin


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


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

HUB

M3

PC1
M21

M22

A
PC2

M1
M21

M3


M21

E1 D1

IP
E2 D2

ENL

PAQ IP
E1 D1

E2 D2

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


M2

ENL

Mensajes perdidos: TCP

Mensajes perdidos: TCP


M1

PAQ IP

IP

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

M22
Congestin!

39

Mensajes perdidos: TCP




Recepcin de mensaje recib mensaje


nmero N implica transmisin correcta
desde ltimo reconocido hasta el N

CLIENTE

SERVIDOR

M1
M2

ACK1

M3
Timeout ACK2!!!
M2

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.

M3->buffer
ACK3

M4

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


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.

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


Ejemplo:

CLIENTE A
Inicio Ch a N2

P1

CLIENTE B
P2

SERVIDOR

Inicio Ch a N2

TCP NODO 1

Solicitud de reserva

LISTEN

Nuevo Ch: P1/IP_A

TCP NODO 2

Canal establecido puerto 1

RED

40

Distincin aplicaciones SERV




Esquema de capas definitivo:

Distincin aplicaciones SERV




CAPA DE APLICACIN
CAPA TCP
CAPA IP

CAPA DE ENLACE DE DATOS


CAPA FSICA

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




Aplicacin sobre TCP




Se enumeran las modificaciones


necesarias para la transmisin sobre
TCP/IP

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

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




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




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:

TR_TCP y RCV_TCP:
ENABLE

TR_TCP

REMOTE_PORT
IP_ADDR
LOCAL_PORT
BUFFER_ADDR
READY

BUFFER_SIZE
ENABLE

RCV_TCP

REMOTE_PORT
IP_ADDR

BUFFER_OW

LOCAL_PORT

Anlisis del cdigo WRITE


ENABLE
IP_ADDR

BUFFER_ADDR

NUM_DATA

BUFFER_SIZE

READY

Anlisis de cdigo WRITE


ENABLE

WRITE

IP_ADDR

LOCAL_BUFFER

BUFFER_SIZE

BUFFER_SIZE
REMOTE_BUFFER

WRITE

LOCAL_BUFFER

Cdigo: Inicio conexin a servidor

READY

CLIENTE

SERVIDOR
WRITE_DATA

ENABLE

INIT_CONNECTION

RCPT_READY
DATA

=S

INIT_CONNECTION

LOCAL_PORT
CONNECT_END

IP_ADDR

CONNECT_END

READY

CONNECT

REMOTE_PORT

END_TRANSFER

REMOTE_BUFFER

=R

INIT_CONNECTION

42

Anlisis de cdigo WRITE


CLIENTE

WRITE_DATA

SERVIDOR

ENABLE
IP_ADDR

Anlisis de cdigo WRITE

WRITE

CLIENTE

RCPT_READY

SERVIDOR

CONNECT_END

=S

READY

REMOTE_BUFFER

Cdigo:
TR_WRITEDATA_END

TR_WRITEDATA

RCV_RCPTDATA
TR_WRITEDATA

WRITE

BUFFER_SIZE

BUFFER_SIZE
REMOTE_BUFFER

IP_ADDR
LOCAL_BUFFER

LOCAL_BUFFER

Cdigo:

ENABLE

TR_TCP

=S

READY

RCV_RCPTDATA

RCV_TCP

REMOTE_PORT

REMOTE_PORT

IP_ADDR

IP_ADDR

LOCAL_PORT

LOCAL_PORT
ADDR_WRITEDATA

TEMP_BUFFER
TR_WRITEDATA_END

%1 = BUFFERSIZE
TR_WRITEDATA_END

=R

%1

TR_WRITEDATA

RCPTDATA_END

RCPTDATA_END

=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


Protocolo MODBUS/TCP

Marzo de 1999: MODBUS/TCP, 1.0.


Shneider Electric (MODICON).
Combina: TCP/IP, Ethernet y
MODBUS.

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 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

ENCABEZADO
MODBUS/TCP

Protocolo MODBUS/TCP


LARGO DESCRIPCIN

CDIGO DE
FUNCIN

DATOS

Protocolo MODBUS/TCP

Encabezado MODBUS/TCP:

CAMPO

Trama de datos:

CLIENTE

SERVIDOR

Identificador
2B
de transaccin

Identifica
transaccin

Iniciado por
cliente

Copiado por
servidor

Identificador
de protocolo

2B

Protocolo
MODBUS = 0

Iniciado por
cliente

Copiado por
servidor

Largo

2B

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

Tipos de datos de MODBUS/TCP:


bits y palabras (16 bits)

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

SISTEMAS SCADA

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

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:




La red de comunicaciones


PLC
RTU (Remote Terminal Unit)
Sistema de mdulos comunicndose en un plano
distinto que el sistema SCADA

La estacin de supervisin


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

Conexin de los componentes

Estacin de supervisin es la unidad maestra del


sistema SCADA
Dos funciones principales:


La red de comunicaciones es el medio para


transferir informacin desde la estacin remota.
Ejemplos:

Recibir informacin de las estaciones remotas y


generar acciones segn eventos detectados
Interfaz hombre mquina, del sistema al operador
(MMI - Man Machine Interface)

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:





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


Software de unidad central




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

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

Operacin del software SCADA

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

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




Operacin del software SCADA




Driver Image Table:







Representacin del proceso


Se crea uniendo bloques de lgica de control
de proceso



Bloques primarios
Bloques secundarios

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

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)

Base 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

Operacin del software SCADA




Adquisicin de datos:

Otros Temas





La interfaz entre las capas


Programacin
Sistemas en Red
Conexin con los Sistemas de Informacin
de la planta

48

Introduccin


PLC

LENGUAJE ST

Estructura de programa


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

Operadores de expresiones


Operadores:







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

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.

Operadores de expresiones


Una expresin resulta en un nico


valor. Se compone de operadores y
operandos

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:









Sentencias: Comentarios


Comentario
Asignacin
Invocacin a bloque funcional
Retorno
Seleccin
Iteracin

(* 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;

Comentarios: se sitan entre smbolos (* y


*). Ejemplo:

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:





Sentencias de seleccin


IF .. THEN .. ELSE .. END_IF


CASE .. OF

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:

Sentencias de seleccin


IF A=3 THEN
B:=7;
END_IF

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

Sentencia CASE: ejecucin condicionada


al valor de una variable. Sintaxis:

Sentencias de iteracin


Existen 3 tipos de sentencias de iteracin:




:=
:=
:=
:=

TRUE;
FALSE;
FALSE;
TRUE;




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:

Sentencias de iteracin


INT_Var: INT;
FOR INT_Var:=<VALOR_INICIAL> TO
<VALOR_FINAL> {BY <PASO>}
DO
<Instrucciones>
END_FOR;

Sentencias de iteracin


Ejemplo FOR. Si el valor inicial de VAR1 es 1,


el valor al finalizar la ejecucin del bucle FOR
es 32:

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/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;
END_FOR;

FOR Contador:=1 TO 5 BY 1 DO
Var1:=Var1*2;
IF Var1 > 5 THEN
EXIT;
END_IF
END_FOR;

Sentencias de iteracin

Sentencias de iteracin

Evitando bucles infinitos FOR: el


VALOR_FINAL debe pertenecer al rango del
contador.

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


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


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

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


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.

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

Ejemplo en ST - 1

El motor de la bomba se apagar si:

(* Inicializacin *)
IF (NOT CICLOINI_FLAG)
THEN

1) Se pulsa el botn de parada.

ESTADO_APAGADO := TRUE;

2) Se cierra la proteccin trmica.

ESTADO_TRANSITORIO := FALSE;

3) Se pulsa el botn de emergencia.

ESTADO_ENCENDIDO := FALSE;
CICLOINI_FLAG := TRUE;

4) Los lmites de corriente no son los correctos.

END_IF;

Ejemplo en ST - 2

Ejemplo en ST - 3

TIMER1 (E := ESTADO_TRANSITORIO, T := DELAY );

ELSIF (ESTADO_TRANSITORIO AND (TERMICO OR ALARMA


OR PARADA)) THEN

TIMEOUT_TIMER1 := TIMER1.A;

ESTADO_TRANSITORIO := FALSE;

IF (ESTADO_APAGADO AND ARRANQUE) THEN

BOMBA_ON := FALSE;

ESTADO_TRANSITORIO := TRUE;

ESTADO_APAGADO := TRUE;

BOMBA_ON := TRUE;
ESTADO_APAGADO := FALSE;
ELSIF (ESTADO_APAGADO AND (NOT ARRANQUE)) THEN

ELSIF (ESTADO_TRANSITORIO AND TIMEOUT_TIMER1)


THEN
ESTADO_TRANSITORIO := FALSE;

BOMBA_ON := FALSE;

ESTADO_ENCENDIDO := TRUE;

Ejemplo en ST - 4

Ejemplo en ST - 5

ELSIF (ESTADO_ENCENDIDO AND (TERMICO OR ALARMA OR


PARADA
OR
(CORRIENTE
>
CORRIENTE_MAX)
OR(CORRIENTE<CORRIENTE_MIN)))

Declaracin de variables del programa:

THEN

VAR
DELAY AT %MD4000.1: TIME

:= T#5s;

(* De acuerdo a ayuda de ESV, DELAY es tipo TIME. *)

ESTADO_ENCENDIDO := FALSE;
BOMBA_ON := FALSE;
ESTADO_APAGADO := TRUE;

(* 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

END_IF;
(* END_IF termina sentencia IF para el diagrama
de estados *)

%MD4000.00 .. %MD4007.15, y se asigna a tipo


DINT / TIME *)

54

Ejemplo en ST - 6

Ejemplo en ST - 7

(* Continuacin de declaracin de variables *)

Declaracin de variables globales:

TIMER1: ESV;

VAR_GLOBAL

ESTADO_APAGADO AT %MX0.0: BOOL;

ARRANQUE AT %IX62.0 : BOOL;

ESTADO_TRANSITORIO AT %MX0.1: BOOL;

PARADA AT %IX62.1 : BOOL;

ESTADO_ENCENDIDO AT %MX0.2: BOOL;

ALARMA AT %IX62.2 : BOOL;

TIMEOUT_TIMER1 AT %MX0.3: BOOL;

TERMICO AT %IX62.3 : BOOL;

CORRIENTE_MAX AT %MW3001.0: INT := 120;

(* ... *)

(* KW00,00 .. KW31,15 -> %MW3000.00 .. %MW3031.15 *)

BOMBA_ON AT %QX62.2 : BOOL;

CORRIENTE_MIN AT %MW3001.1: INT := 50;

CORRIENTE AT %IW1062.1 : INT;

END_VAR

(* ... *)
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:



ARQUITECTURA DEL
PLC SEGN IEC 1131-1

Lectura de entradas
Ejecucin de programa
Actualizacin de salidas

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:





Tarea define:




Programas asociados a la tarea


Condicin de disparo
Prioridad

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

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

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:


Los programas se organizan sobre


unidades POU (Program Organizational
Unit)

La Tarea


Configuracin
Recursos
Tareas
Programas

Introduccin


Introduccin

Intervalo peridico de tiempo expresado en mseg


(tarea tiene un ciclo asociado, anlogo al del PLC)
Evento

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):




Las POU


Programas:


Programa propiamente dicho


Bloques funcionales
Funciones o procedimientos

Las POU


Funciones:




Las POU


Aceptan mltiples parmetros de entrada


Salida nica
Por ej., la funcin FuncionEjemplo
devuelve una variable tipo WORD:

Bloques funcionales:


FUNCTION FuncionEjemplo: WORD

Las POU


Diferencia entre bloque funcional y


funcin:


Nmero de salidas:



Funcin permite slo una salida


Bloque funcional permite ms de una

Funcin no
Bloque funcional s

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

Variables
En lo que va del curso cada variable se asocia
a una direccin de memoria fija
Una variable puede ser:


Variables permanentes (conservan valor


entre ejecuciones):


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

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

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


NombreVar [AT %DireccinVar] :


TipoDeDato [::= ValorInicial];

Variables


DireccinVar:

[Cdigo letras] [Cdigo nmeros]

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

AT %DireccinVar se usa para variables


representadas de forma directa

Variables


Variables

Declaracin genrica de variable:

Cdigo de letras: distingue el tipo de dato


Primer letra:
- I/E: Direccin E
- Q/O: Direccin S
- M: Direccin dato interno

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

You might also like