Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
Ventajas:
cambio de hardware por software flexibilidad
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
TIPOS DE DATOS
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
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
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)
OR (Conexin Paralelo)
O1 = 1 si (I1 = 1) o (I2 = 1)
Contacto invertido:
Contacto normalmente cerrado Verdadero si bit vale 0
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
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
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
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
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:
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
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
R
ERROR X_APAGADO BOMBA_ON
EL AC31GRAF
Encendido
Acciones
X_TRANSITORIO
BOMBA_ON
Introduccin
PLCs laboratorio: 07KR51 ABB Ambiente de desarrollo: AC31GRAF
Introduccin
Permite:
- Desarrollar programas para el PLC - Comunicacin con 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)
Management
del
abrir, crear mdulos editar listas de variables compilar mdulos configurar y establecer comunicacin con el PLC
16
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
LENGUAJE FBD
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)
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)
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 *))
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*)
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
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
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
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:
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 TCP/IP
31
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
32
33
WRITE
CLIENTE
WRITE_DATA RCPT_READY DATA END_TRANSFER
SERVIDOR
SERVIDOR
WRITE
SERVIDOR
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
SERVIDOR
WRITE
SERVIDOR
WRITE
Cdigo:
1)
READY
REMOTE_BUFFER
READY
=S
TR_DATA
LAN_TR
TR_DATA_END
=R
TR_DATA
34
PROGRAMA SERVIDOR
00 01
BUFR_ADR
LAN_TR
LAN_LISTEN
BUFR_ADR
Encabezado Ethernet
0001
Cola Ethernet
00 01
BUFR_ADR
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
WRITE
CLIENTE
WRITE_DATA RCPT_READY DATA END_TRANSFER
SERVIDOR
SERVIDOR
WRITE
SERVIDOR
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
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
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
HUB PC2
M1
?
M21
M3
39
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
P1
TCP NODO 1
TCP NODO 2
RED
40
41
TR_TCP
WRITE
WRITE
CLIENTE
WRITE_DATA RCPT_READY DATA END_TRANSFER
SERVIDOR
ENABLE
=S
INIT_CONNECTION
CONNECT
LOCAL_PORT CONNECT_END
CONNECT_END
=R
INIT_CONNECTION
42
SERVIDOR
WRITE
SERVIDOR
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
=R
TR_WRITEDATA
=R
RCV_RCPTDATA
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)
Las estaciones centrales de supervisin pueden estar dispuestas en red, para intercambio de informacin de distintos sistemas SCADA
Ejemplo
46
47
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: 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
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.
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.
Introduccin PLC
Arquitectura hasta ahora consiste en ejecucin cclica de programa, con tres fases:
Lectura de entradas Ejecucin de programa Actualizacin de salidas
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
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
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];
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