Académique Documents
Professionnel Documents
Culture Documents
Captulo 6
Captulo 6
Elementos comunes de los
lenguajes de programacin
B-62
Captulo 6
6.1
Recursos de
un PLC
Segn IEC 1131-3, slo las entradas, las salidas y los elementos de
memoria pueden ser direccionados directamente por un programa de
control. En este caso, el direccionamiento directo significa que en el
programa, una entrada, salida o elemento de memoria del control est
afectado inmediatamente y no indirectamente a travs de una variable
simblica definida. Naturalmente, IEC 1131-3 reconoce muchos otros
recursos, p. ej. temporizadores y contadores. Sin embargo, estos estn
integrados en funciones y bloques de funcin para asegurar el ms
alto grado posible de portabilidad del programa de control entre los
diferentes sistemas.
Entradas, salidas y la memoria
Los constituyentes ms importantes de un control incluyen las entradas, salidas y la memoria. Slo a travs de estas entradas puede un
control recibir informacin de los procesos conectados. De forma similar, slo puede influir en ellos a travs de sus salidas o almacenar
informacin para la subsecuente continuacin del proceso.
Las denominaciones para los recursos entradas, salidas y elementos
de memoria, estn definidos por IEC 1131-3 y son obligatorios..
Fig. B6.1:
Designaciones para
Entradas, Salidas y
Memoria
Entradas
(Inputs)
Salidas
(Outputs)
Memorias
(Memory)
Sin posteriores referencias, estos designan slo entradas y salidas binarias y elementos de memoria de un slo bit, designados como flags
(tambin denominado marcas).
El estndar habla generalmente de variables representadas directamente. Estas son variables que estn referidas directamente a las entradas, salidas y elementos de memoria del control disponibles, relacionadas con el hardware. La asignacin de entradas, salidas y memorias
(flags), y su posicin fsica o lgica en el sistema de control es definido
por el correspondiente fabricante del control.
B-63
Captulo 6
BYTE
WORD
Fig. B6.2:
Tipos de datos
Los tamaos de 1 bit, tal como describe el tipo de datos BOOL (booleana) solamente pueden asumir los valores 0 1. Consecuentemente,
el margen de valores para un dato del tipo BOOL consiste en dos
valores "0" y "1".
A diferencia de esto, hay que destacar que en el caso de los tipos de
datos de secuencia de bits, que consisten en ms de un bit, no hay un
rango de valores relacionado inmediatamente. Todos los tipos de datos
de secuencias de bits, tales como p. ej. BYTE y WORD son meramente una combinacin de varios bits. Cada uno de estos bits tiene el
valor 0 1, pero su combinacin no tiene su propio valor.
Los mtodos de designacin obligatorios para entradas, salidas y flags
de diferentes longitudes de bits estn representados en la fig. B6.3.
I, Q, M
o bien
IX, QX, MX
1 bit
IB, QB, MB
8 bit
IW, QW, MW
16 bit
Fig. B6.3:
Designacin para
Entradas, Salidas y
Memorias
B-64
Captulo 6
Un bit individual de una entrada, salida o flag tambin puede ser direccionado sin la abreviacin adicional X para el tipo de dato.
Como sea que los controles siempre tienen un nmero relativamente
grande de entradas, salidas y flags disponibles, estos deben ser especialmente identificados a efectos de diferenciacin. Para ello se utiliza
la numeracin indicada por IEC 1131-3, como en el siguiente ejemplo:
I1
Entrada 1
IX9
Entrada 9
I15
Entrada 15
QW3
Word de salida 3
MB5
Byte de memoria 5
MX2
Memoria 2
Ejemplo
I3.8.5
B-65
Captulo 6
3.
8.
Bit de entrada 12
%IW5
Word de Entrada 5
%QB8
Byte de Output 8
%MW27
Word de Memoria 27
Fig. B6.4:
Estructura de las
designaciones jerrquicas
B-66
Captulo 6
6.2
Variables y
tipos de datos
La utilizacin de variables representadas exclusiva y directamente (recursos, entradas, salidas y memoria) no es suficiente para crear programas de control. Frecuentemente, se requieren datos, que contienen
informacin especfica, tambin de una naturaleza ms compleja. Estos datos pueden ser especificados directamente, es decir, datos de
tiempo o valores de recuento, o accesibles slo a travs de variables
es decir, a travs de una representacin simblica. Las definiciones
ms importantes para tratar con datos o variables se indica abajo.
Direccionamiento simblico
Un identificador simblico siempre consiste en una letra mayscula o
minscula, dgitos y un guin de subrayado. Un identificador debe empezar siempre con una letra o un guin de subrayado. El guin de
subrayado puede utilizarse para hacer ms leble un identificador. Sin
embargo, es un carcter significativo. Por ello, los dos identificadores
Marcha_motor y Marchamotor son diferentes. No se permiten varios
guiones de subrayado. Si el control permite letras maysculas y minsculas, su utilizacin indistinta no debe tener significacin alguna. Los
dos identificadores MARCHAMOTOR y Marchamotor se interpretan
idnticamente y designan el mismo objeto.
Los siguientes identificadores no son permisibles:
123
Button_?
B-67
Captulo 6
Descripcin
Ejemplos
Enteros
Nmeros de base 2
(Nmeros binarios)
2#1111_1111
2#1101_0011
(255 decimal)
(211 decimal)
Nmeros de base 8
(Nmeros octales)
8#377
8#323
(255 decimal)
(211 decimal)
Nmeros de base 16
(Nmeros hexadecimales)
16#FF o 16#ff
16#D3 o 16#d3
(255 decimal)
(211 decimal)
0, 1
Tabla B6.1:
Representacin de
datos numricos
Descripcin
Ejemplos
Duracin de tiempo
Fecha
D#1994-07-21
DATE#1994-07-21
Hora del da
TOD#13:18:42.55
TIME_OF_DAY#13:18:42.55
Fecha y Hora
DT#1994-07-21-13:18:42.55
DATE_AND_TIME#1994-07-21-13:18:42.55
Tabla B6.2:
Representacin de tiempo,
fecha y hora
B-68
Captulo 6
Dias
Horas
Minutos
Segundos
ms
Milisegundos
Tambin pueden utilizarse maysculas en lugar de minsculas y guiones de subrayado para mejorar la lectura del dato.
Tambin IEC 1131-3 ha especificado un formato fijo para la indicacin
de una fecha, hora del da o una combinacin de ambos. Cada especificacin empieza con una palabra clave; la informacin real se representa como se muestra en la tabla B6.2.
Otro mtodo importante de representacin de fechas es el uso de una
secuencia de caracteres tambin conocida como cadena, que puede
ser requerida para el intercambio de informacin, es decir, entre diferentes controles, con otros componentes de un sistema de automatizacin o tambin para la programacin de textos para visualizacin en
el control y en dispositivos de visualizacin.
Una cadena consiste en ninguno o varios caracteres, que empiezan y
terminan con una coma volada.
Tabla B6.3:
Representacin de cadenas
Ejemplo
Descripcin
Atencin
cadena vaca
B-69
Captulo 6
Tipos de datos
IEC 1131-3 define un gran nmero de tipos de datos para diferentes
tareas. Uno de estos tipos de datos, BOOL, ya ha sido mencionado.
Una variable del tipo BOOL asume el valor 0 bien el valor 1.
Palabra clave
Tipo de Dato
Margen de valores
BOOL
Nmero Booleano
0, 1
SINT
Entero corto
0 a 255
INT
Entero
DINT
Entero doble
UINT
0 a 65 535
REAL
+/-2.9E-39 a +/-3.4E+38
TIME
Duracin de tiempo
dependiendo de la implementacin
STRING
dependiendo de la implementacin
BYTE
Secuencia de 8 bits
WORD
Secuencia de 16 bits
Otros dos importantes tipos de datos, denominados INT e UINT definen nmeros enteros. Las variables del tipo de datos INT (integer/entero) permiten valores numricos de -32 768 hasta +32 767. El margen
de valores del tipo de dato INT cubre tanto valores negativos como
positivos. Las variables del tipo UNIT (unsigned integer/entero sin signo) slo permiten valores positivos. El margen de valores para las
UINT va desde 0 a 65 535. SINT (short integer/entero corto) y DINT
(double integer/entero doble) son tipos de datos adicionales que definen nmeros enteros. Sin embargo, estos tiene un margen de valores
inferior o superior que el tipo de datos INT. El tipo de datos REAL
contiene nmeros en coma flotante. Estos son nmeros que pueden
contener lugares tras la coma, tales como el 3,24 -1,5. El tipo de
datos TIME se utiliza para especificar el tiempo, y puede contener una
duracin de tiempo como por ejemplo: 2 minutos y 30 segundos.
Tabla B6.4:
Un nmero de tipos de
datos elementales
B-70
Captulo 6
Tabla B6.5:
Tipos de datos derivados
Declaracin
TYPE END_TYPE
Tipo de enumeracin
Tipo de subrango
Margen_referencia: INT(80..110);
Campos (array)
Estructuras
Coordenadas:
STRUCT
X:REAL;
Y:REAL;
END_STRUCT;
B-71
Captulo 6
Declaracin de variables
Con el uso de datos, debe definirse claramente el derecho de acceso a
estos datos. Con este fin, IEC 1131-3 utiliza una declaracin de variables.
Para comprender la funcin de una declaracin de variables, es necesario establecer antes que el programa del control est construido en
unidades de organizacin individuales.
Estas unidades son:
Configuracin
Recurso
Programas
Bloques de funcin
Funciones
Todas las variables tienen una posicin especfica. En el caso de lenguajes de programacin en forma textual (IL y ST), las declaraciones
de variables son aproximadamente las mismas que las utilizadas en el
lenguaje Pascal. Para las formas grficas de representacin sera factible una forma tabular con el contenido equivalente. Sin embargo, esto
no est especificado en IEC 1131-3.
Todas las declaraciones de variables (fig. B6.5) siempre empiezan con
una palabra clave, que designa la posicin de la variable en la unidad
de organizacin del control, y termina con la palabra clave END_VAR.
VAR
Temp
Manual
Lleno, Abierto
END_VAR
: INT;
: BOOL;
: BOOL;
(*Temperatura
(*Flag para funcionamiento manual
(*Flag para "lleno" y "abierto"
*)
*)
*)
Fig. B6.5:
Declaracin de variables
B-72
Captulo 6
IEC 1131-3 distingue entre seis tipos diferentes de acceso a las variables. Cada tipo tiene una palabra clave, que introduce la declaracin
de la variable.
Tabla B6.6:
Palabras clave para la
declaracin de variables
Variables de Entrada
VAR_INPUT
Variables de Salida
VAR_OUTPUT
Variables de Entrada/Salida
VAR_IN_OUT
Variables locales
VAR
Variables globales
VAR_GLOBAL
Variables externas
VAR_EXTERN
Fig. B6.6:
Declaracin de una
variables de entrada
VAR_INPUT
Input : INT;
END_VAR
(*Valor de entrada
*)
Las variables especificadas de esta forma representan variables de entrada, alimentadas externamente a una unidad de organizacin, p. ej,
un bloque de funcin. Estas slo pueden leerse dentro de la unidad de
organizacin.
No es posible hacer modificaciones.
Anlogamente a esto, las variables de salida se definen con las palabras clave VAR_OUTPUT y END_VAR
Fig. B6.7:
Declaracin de una
variable de salida
VAR_OUTPUT
Result : INT;
END_VAR
(*Valor de realimentacin
*)
B-73
Captulo 6
En los casos en que se permitan variables conteniendo valores de entrada y salida, estos deben crearse con las palabras clave
VAR_IN_OUT y END_VAR.
VAR_IN_OUT
Value
END_VAR
Fig. B6.8:
Declaracin de una
variable de entrada/salida
: INT;
VAR
Z
END_VAR
: INT;
(*Resultado intermedio
*)
Las variables especificadas aqu son locales para una unidad de organizacin y solame te pueden ser utilizadas en ella. Son desconocidas
para otras unidades organizacionales y por lo tanto inaccesibles.
Una aplicacin tpica son las posiciones de memoria para resultados
intermedios, que no son de inters en otras zonas del programa. En el
caso de estas variables, hay que observar que tambin pueden existir
varias veces en diferentes unidades de organizacin. De esta forma,
es posible, por ejemplo, que varios bloques de funcin declaren la variable local Z. Estas variables locales son completamente independientes y difieren unas de otras.
Una variable tambin puede ser declarada globalmente, en cuyo caso
puede ser accedida universalmente. La necesaria declaracin se realiza de una forma similar, utilizando las palabras clave VAR_GLOBAL y
VAR_EXTERNAL.
Fig. B6.9:
Declaracin de una
variable local
B-74
Captulo 6
Fig. B6.10:
Declaracin de una
variable global
VAR_GLOBAL
Global_value: INT;
END_VAR
Fig. B6.11:
Declaracin de acceso a
una variable global
VAR_EXTERNAL
Global_value: INT;
END_VAR
Fig. B6.12:
Declaracin de variables
con asignacin a entradas
de un control
VAR
Pulsador_paro AT %I2.3: BOOL;
Temperatura AT %IW3: INT;
END_VAR
Las declaraciones hechas de esta forma son el mejor medio para definir el significado de todas las entradas y salidas del control. Si se produce un cambio en el sistema y su conexin al controlador, slo debern ser cambiadas estas declaraciones. Cualquier utilizacin p. ej. del
Pulsador_paro, o de la Temperatura en un programa existente, no se
ve afectada por el cambio.
B-75
Captulo 6
: BOOL;
: WORD;
Inicializacin
A menudo es esencial que a una variable se le asigne un valor inicial.
Este valor puede cambiar varias veces durante el procesamiento del
programa, incluso aunque haya estado definida el principio.
Los estados iniciales como estos tambin son importantes para otros
datos. Tales valores iniciales se especifican conjuntamente con la declaracin de las variables. Una variable global de este tipo denominada
p. ej. Docena se declara para que al principio del programa asuma el
valor 12.
VAR_GLOBAL
Docena
END_VAR
Fig. B6.13:
Declaracin de una
variable global
con valor inicial
: INT := 12;
Valor inicial
0
0
0
0.0
T#0s
(cadena vaca)
Tabla B6.7:
Valores iniciales
preestablecidos
B-76
Captulo 6
6.3
Programa
F nombre
X
Y
Z
Fig. B6.14:
Representacin
grfica de una funcin
Entradas
Salida
B-77
Captulo 6
%QW4
%IW9
%IW7
%IW2
4
ADD
%MW1
a) sin nombres de
parmetros formales
SHL
IN
N
%MW5
b) con nombres de
parmetros formales
Fig. B6.15:
Uso de parmetros
formales con funciones
%Q5.3
%M1.1
AND
%Q4.1
Fig. B6.16:
Representacin de
negaciones Booleanas
B-78
Captulo 6
ADD
ADD
INT
ejemplo
VAR
AT %IW1 : INT;
AT %IW2 : INT;
AT %MW3 : INT;
END_VAR
%IW1
%IW2
ADD
%MW3
general
VAR
SINT
SINT
ADD
SINT
AT %IB4 : SINT;
AT %IB5 : SINT;
AT %MB6 : SINT;
END_VAR
Fig. B6.17:
Funcin sobrecargada de
tipo independiente
%IB4
%IB5
ADD
%MB6
B-79
Captulo 6
general
INT
INT
ADD_INT
INT
ejemplo
VAR
AT %IW1 : INT;
AT %IW2 : INT;
AT %MW3 : INT;
END_VAR
%IW1
%IW2
ADD_INT
%MW3
Fig. B6.18:
Una funcin con tipo
Funciones estndar
Las funciones estndar ms importantes para la realizacin de tareas
bsicas de tecnologa de control se relacionan a continuacin.
Dado que una gran variedad de funciones estndar pueden funcionar
utilizando parmetros de entrada de diferentes tipos de datos, los tipos
de datos se han combinado en grupos. A cada grupo se le ha dado un
tipo de datos genrico. Los tipos de datos genricos ms importantes
se muestran en la tabla B6.8.
ANY_NUM
ANY_INT
Todos los tipos de datos para enteros tales como INT, UINIT, etc.
ANY_REAL
ANY_BIT
Tabla B6.8:
Tipos de datos genricos
B-80
Captulo 6
ANY_BIT
ANY_BIT
...
***
ANY_BIT
...
ANY_BIT
* * * = nombre o smbolo
Nombre
AND
OR
Tabla B6.9:
Funciones booleanas
Bit-a-bit
XOR
Smbolo
Descripcin
&
>=1
=2k+1
NOT
Entrada negada
ANY_BIT
ANY_INT
***
IN
N
ANY_BIT
* * * = nombre
Tabla B6.10:
Funciones de
desplazamiento de bits
Nombre
Descripcin
SHL
SHR
ROR
ROL
B-81
Captulo 6
***
ANY_BIT or ANY_NUM
...
...
ANY_BIT or ANY_NUM
* * * = nombre o smbolo
Nombre
Smbolo
Descripcin
GT
>
GE
>=
EQ
Igual
LE
<=
LT
<
NE
<>
No igual, no expandible
Tabla B6.11:
Funciones de comparacin
a) Representacin grfica
ANY_BIT
BCD_TO_INT
INT
Descripcin:
Convierte variables del tipo BYTE, WORD etc. en
variables del tipo INT.
La variable de secuencia de bits contiene datos en
formato BCD (nmero decimal codificado en binario)
Ejemplo:
2#0011_0110_1001
BCD_TO_INT
369
b) Representacin grfica
INT
INT_TO_BCD
ANY_BIT
Descripcin:
Convierte variables de tipo INT en variables de tipo BYTE,
WORD etc.
La variable de secuencia de bits contiene datos en formato
BC.
Ejemplo:
25
INT_TO_BCD
2#0010_0101
Tabla B6.12:
Funciones para
conversin de tipo
B-82
Captulo 6
ANY_NUM
ANY_NUM
...
***
ANY_NUM
...
ANY_NUM
* * * = nombre o smbolo
Nombre
Smbolo
ADD
Tabla B6.13:
Funciones aritmticas
Descripcin
Suma todas las entradas
MUL
SUB
DIV
MOVE
:=
Bloques de funcin
Los bloques de funcin son mdulos de software que proporcionan uno
o varios parmetros resultantes.
Una caracterstica importante es la posibilidad de reutilizacin de los
bloques de funcin. Si debe utilizarse un bloque de control en un programa, debe crearse una copia. Esto se realiza a travs de la asignacin de un nombre para cada caso. Junto con este identificador hay
una estructura de datos, que almacena los estados de esa copia del
bloque de funcin (valores de los parmetros de salida y variables internas). La informacin del estado de la copia del bloque de funcin
permanece inalterable entre un procesamiento y el siguiente.
Esto puede demostrarse utilizando el ejemplo del bloque de funcin
estndar para operaciones de recuento. El valor actual del contador
permanece de una operacin de recuento a la siguiente y puede as
ser interrogada en cualquier momento. Este tipo de comportamiento no
puede realizarse a travs del recurso lenguaje, como se describe arriba.
B-83
Captulo 6
Identificador
Tipo FB
X
P
Y
Q
Tipo dato
Tipo dato
Entradas
Tipo dato
Tipo dato
Salidas
Fig. B6.19:
Representacin grfica
de una copia de un
bloque de funcin
BOOL
BOOL
INT
CTU
CU Q
R
PV CV
BOOL
INT
Count_Pack
%I 1.3
10
CTU
CU Q
R
PV CV
%Q2.5
Fig. B6.20:
Uso (invocacin) del
bloque de funcin CTU
(contador incremental)
B-84
Captulo 6
IN
PT
Q
ET
BOOL
TIME
T_Colour
%I 1.7
T#7s
Fig. B6.21:
Uso de varias copias de
un bloque de funcin
TP
IN
Q
PT ET
Bloque de funcin
tipo TP (pulse timer)
OR
Display_1
T#3s15ms
T_Pressure
TP
IN
Q
PT ET
B-85
Captulo 6
RS
CTU
Contador incremental
CTD
Contador decremental
TP
Pulso de tiempo
TON
Retardo a la conexin
TOF
Retardo a la desconexin
R_TRIG
F_TRIG
Tabla B6.14:
Bloques de funcin
estndar
B-86
Captulo 6
A la funcin ejemplo SPEC_MUL en la fig. B6.22 se le dan dos parmetros del tipo INT. Los dos valores de parmetros son multiplicados y
se le aade la cifra 15. El valor as calculado es devuelto a la funcin
como resultado.
FUNCTION
INT
INT
SPEZ_MUL
F1
F2
INT
(* Cuerpo de la funcin:
*)
(* Programado en lenguaje FBD *)
F1
F2
*
+
SPEZ_MUL
15
Fig. B6.22:
Ejemplo de una
funcin SPEZ_MUL
END_FUNCTION
VAR
AT %MW1
AT %MW2
AT %MW3
AT %IW4
AT %QW5
: INT;
: INT;
: INT;
: INT;
: INT;
END_VAR
%MW1
%MW2
Fig. B6.23:
Uso de la funcin
SPEZ_MUL
SPEZ_MUL
F1
F2
%MW3
%IW4
%QW5
B-87
Captulo 6
FUNCTION_BLOCK
BOOL
TIME
Filtro_rebotes
S_ON
S_OFF
E_TIME
BOOL
S_ON
EP_ON
EP_S
TON
IN
Q
PT ET
SR
S1 Q1
R
S_OFF
EP_OFF
E_TIME
TOF
IN
Q
PT ET
END_FUNCTION_BLOCK
Fig. B6.24 :
Declaracin de un
bloque de funcin
B-88
Captulo 6
Programas
Un programa consiste en cualquier cantidad de elementos de lenguaje
y construcciones, necesarios para conseguir el comportamiento deseado de la mquina o proceso a travs del PLC.
Por ello, los programas estn construidos principalmente por funciones,
bloques de funcin y los elementos del diagrama de funciones secuencial.
Por ello, las caractersticas de los programas son en gran parte idnticos a los de los bloques de funcin. Lo nico que nos interesa en esta
etapa son las diferencias:
Las palabras clave delimitadoras para las declaraciones de programa son PROGRAM... END_PROGRAM.
La utilizacin de variables directamente direccionables solamente se
permite dentro de programas.
Un ejemplo de esto se muestra en la figura B6.25.
PROGRAM luz_escalera
VAR
Interruptor_F AT %IX0.0 : BOOL; (* Interruptor en la puerta
Interruptor_A AT %IX0.1 : BOOL; (* Interruptor interior apartamento
AT %QX0.0 : BOOL; (* Luz de la escalera
Luz
(* Tiempo de encendido
: TP;
Duracion
*)
*)
*)
*)
END_VAR
Interruptor_F
Interruptor_A
T#3m
OR
Duracion
TP
IN
PT
Q
ET
Luz
END_PROGRAM
Fig. B6.25:
Ejemplo de un programa
B-89
Captulo 6
B-90
Captulo 6