Sunteți pe pagina 1din 30

B-61

Captulo 6

Captulo 6
Elementos comunes de los
lenguajes de programacin

Festo Didactic TP301

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.

TP301 Festo Didactic

B-63
Captulo 6

Siempre que el control lo soporte, pueden direccionarse recursos que


excedan de un bit. IEC 1311-3 emplea otra letra para decribirlos, que
sigue a la abreviacin I, Q y M y, por ejemplo, designa bytes y words.
IEC 1131-3 designa los tipos de datos mostrados en la fig. B6.2 en
relacin con las entradas, salidas y flags.
BOOL

Secuencia de bits de longitud 1

BYTE

Secuencia de bits de longitud 8

WORD

Secuencia de bits de longitud16

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

Bit de entrada, bit de salida, bit de memoria

1 bit

IB, QB, MB

Byte de entrada, byte de salida, byte de memoria

8 bit

IW, QW, MW

Word de entrada, word de salida, word de memoria

16 bit

Festo Didactic TP301

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

IEC 1131-3 no especifica el margen de nmeros que se permite para


esta numeracin ni si deben empezar por 0 por 1. Esto lo especifica
el fabricante del control.
Tambin deben utilizarse una cantidad jerrquica de entradas, salidas
y flags, si el control utilizado ha sido adecuadamente configurado.
Se utiliza un punto para separar los niveles individuales de la jerarqua.
El nmero de niveles de jerarqua no ha sido definido.
En el caso de numeracin jerrquica, la posicin ms alta en el nmero de la izquierda debe ser codificado, los nmeros que siguen a la
derecha representan consecutivamente las posiciones ms bajas.

Ejemplo

I3.8.5

TP301 Festo Didactic

B-65
Captulo 6

La estrada especificadas I3.8.5 puede por lo tanto representar:


Entrada
en inserto No. 3
en tarjeta No. 8
como Entrada No. 5
I

3.

8.

IEC 1131-4 no hace ningn comentario en relacin con la asignacin


de bits individuales en un BYTE o WORD. Los fabricantes de los controles a menudo eligen mtodos de designacin jerrquica para asignar
bits individuales como partes de words. As, F6.2 podra representar,
por ejemplo, el bit nmero 2 de la flag word nmero 6. Sin embargo,
esto no tiene que ser necesariamente as, ya que el flag bit F6.2 y la
flag word FW6 no necesariamente tienen que estar conectadas de alguna forma. Adems, no se ha hecho ninguna definicin sobre si la
numeracin de los bits individuales en una word deben empezar por la
derecha o por la izquierda (hasta ahora, el bit nmero 0 en el extremo
derecho ha sido el ms frecuentemente utilizado)
Variables directamente direccionadas
Si los recursos en un programa de control deben ser direccionados
directamente, a la designacin del recurso debe anteponerse el recurso %.
Ejemplos de variables directamente direccionables:
%IX12
o
%I12

Bit de entrada 12

%IW5

Word de Entrada 5

%QB8

Byte de Output 8

%MW27

Word de Memoria 27

El uso de variables directamente direccionadas solamente es permisible en programas, configuraciones y recursos.


Las unidades de organizacin de programas Funcin y Bloque de Funcin deben operar exclusivamente con variables simblicas, para mantener el programa lo ms independiente posible del control y, con ello,
lo ms ampliamente utilizable.

Festo Didactic TP301

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

El nombre no empieza con una letra

Button_?

El ltimo carcter no es vlido ya que


no es ni una letra ni un nmero

Adems, los identificadores simblicos no deben ser idnticos que las


palabras clave. Como regla, las palabras clave son palabras reservadas para tareas especficas.
Representacin de datos
En un programa de control, debe ser posible especificar valores de
tiempo, de recuento, etc.
Consecuentemente, IEC 1131-3 ha establecido las definiciones para la
representacin de los datos a especificar
Valores de recuento
Valores de tiempo
Cadenas

TP301 Festo Didactic

B-67
Captulo 6

Descripcin

Ejemplos

Enteros

12, -8, 123_456*, +75

Nmeros en coma flotante

-12.0, -8.0, 0.123_4*

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)

Cero y Uno Booleanos

0, 1

El uso de subrayados entre dgitos es permisible para mejorar la


legibilidad. Sin embargo, el subrayado no es significativo.

Tabla B6.1:
Representacin de
datos numricos

IEC 1131-3 prev diferentes tipos de datos de tiempo:


Duracin, es decir, para medicin de resultados
Fecha
Hora del da, p. ej. para sincronizacin desde el inicio o el final de
un evento (tambin juntamente con la fecha)

Descripcin

Ejemplos

Duracin de tiempo

T#18ms, t#3m4s, t#3.5s


t#6h_20m_8s
TIME#18ms

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

La especificacin de la duracin de un tiempo consiste en una parte


introductoria, la palabra clave T# o t#, y una secuencia de secciones
relacionadas con el tiempo es decir, das, horas, minutos, segundos
y milisegundos.

Festo Didactic TP301

Tabla B6.2:
Representacin de tiempo,
fecha y hora

B-68
Captulo 6

Abreviaciones para datos de tiempo:


d

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

Cadena de longitud 1, conteniendo el carcter B

Atencin

Cadena de longitud 7, conteniendo el mensaje Atencin

cadena vaca

TP301 Festo Didactic

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

-32 768 a +32 767

DINT

Entero doble

-2 147 483 648 a +2 147 483 647

UINT

Entero sin signo

0 a 65 535

REAL

Nmero en coma flotante

+/-2.9E-39 a +/-3.4E+38

TIME

Duracin de tiempo

dependiendo de la implementacin

STRING

Cadena de longitud variable

dependiendo de la implementacin

BYTE

Secuencia de 8 bits

sin rango de valores declarable

WORD

Secuencia de 16 bits

sin rango de valores declarable

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.

Festo Didactic TP301

Tabla B6.4:
Un nmero de tipos de
datos elementales

B-70
Captulo 6

Aparte de estos tipos de datos predefinidos elementales, el usuario


tiene la posibilidad de definir sus propios tipos de datos. Esto es til en
casos en donde la definicin del problema va ms all del mbito de la
pura tecnologa de control.
Los tipos de datos derivados se declaran dentro de la construccin
TYPE...END_TYPE. La declaracin completa se indica abajo para la
enumeracin del tipo Color en la tabla B6.5:
TYPE
Colo: (ROJO, AZUL, AMARILLO, NEGRO);
END_TYPE

Tabla B6.5:
Tipos de datos derivados

Tipo de dato derivado

Declaracin
TYPE END_TYPE

Tipo de enumeracin

Color: (ROJO, AZUL, AMARILLO, NEGRO);

Tipo de subrango

Margen_referencia: INT(80..110);

Campos (array)

Posicion: ARRAY[1..10] OF REAL;

Estructuras

Coordenadas:
STRUCT
X:REAL;
Y:REAL;
END_STRUCT;

El significado de los tipos de datos individuales en la tabla B6.5 se


explica brevemente abajo:
Un dato del tipo Color solamente puede asumir uno de los valores
ROJO, VERDE, AMARILLO o NEGRO.
Un dato del tipo Margen_referencia slo puede asumir valores entre
80 y 110, incluyen los lmites inferior y superior 80 110.
Un dato del tipo Posicion, representa una lista con 10 entradas.
Cada entrada tiene el valor de un nmero REAL. Con este ndice
pueden indexarse las entradas individuales.
Un elemento del tipo de datos Coordenadas contiene dos nmeros
REAL, a los que puede accederse a travs de sus nombres X e Y.
No todos los controles necesitan reconocer todos estos tipos de datos.
Cada fabricante dispone un juego de tipos de datos, que pueden utilizarse en el correspondiente control.

TP301 Festo Didactic

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"

*)
*)
*)

Las variables y su asignacin a un tipo de datos, se introduce entre


estas palabras clave en las que se especifica un identificador o identificadores simblicos de las variables, el tipo de dato se indica tras dos
puntos y la declaracin se cierra con un punto y coma. Si se declaran
varias variables, se repiten correspondientemente. Normalmente, cada
declaracin se escribe en una lnea separada en este caso.

Festo Didactic TP301

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

Las variables de entrada son declaradas con las palabras clave


VAR_INPUT y END_VAR.

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

*)

El dato que calcula una unidad de organizacin y devuelve de nuevo el


exterior se declara arriba.
Todos los resultados de una unidad de organizacin deben ser transferidos ms all de la unidad de organizacin a travs de variables declaradas de esta forma. Dentro de las unidades de organizacin, estas
pueden ser ledas y escritas. Externamente, slo se permite el acceso
de lectura.

TP301 Festo Didactic

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;

Esta forma representa una tercera opcin y permite la declaracin de


variables, que pueden ser ledas y utilizadas dentro de una unidad de
organizacin.
En el caso de una variable declarada como VAR_IN_OUT, se asume
que ambos valores sern suministrados hacia y desde la unidad de
organizacin.
A menudo, se requieren variables para resultados intermedios, que deben permanecer desconocidos externamente. La declaracin de tales
variables, denominadas locales, empieza con VAR y termina con
END_VAR.

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.

Festo Didactic TP301

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

As es como se declaran todos los datos globales para un programa de


control. Los datos globales son accesibles universalmente. Esta declaracin slo puede hallarse en unidades de organizacin, configuracin
y recurso.

Fig. B6.11:
Declaracin de acceso a
una variable global

VAR_EXTERNAL
Global_value: INT;
END_VAR

Para facilitar el acceso de datos global a una unidad de organizacin,


esta declaracin debe ser registrada en la unidad de organizacin.
Sin la declaracin mostrada arriba, el acceso a los datos globales no
sera permisible.
Esta estricta unidad de declaracin para todas las variables define nicamente qu variables son reconocidas por una unidad de organizacin y cmo pueden ser usadas. Un bloque de funcin puede, por
ejemplo, leer pero no cambiar sus variables de salida.
Se utiliza la palabra clave AT para asignar variables a las entradas y
salidas del control.

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.

TP301 Festo Didactic

B-75
Captulo 6

Sin embargo, segn IEC 1131-3 siempre es posible utilizar variables


direccionadas directamente sin tener que asignarlas a un identificador
simblico. La declaracin en este caso es como sigue:
VAR
AT %I4.2
AT %MW1
END_VAR

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

Como se ha mostrado en este ejemplo, el valor de inicializacin se


inserta siempre entre el tipo de dato en este caso INT y el punto y
coma de cierre. La especificacin del valor de inicializacin siempre
requiere el signo :=.
De esta forma, a cada variable se le puede especificar un valor inicial.
Fundamentalmente, las variables siempre tienen un valor inicial definido al inicio del programa. Esto lo facilita la caracterstica definida en
IEC 1131-3, en donde los tipos de datos tienen un valor preestablecido. Cada variable es preasignada al valor inicial correspondiente al tipo
de dato a no ser que se especifique lo contrario en el programa. Una
lista de los valores iniciales de una seleccin de tipos de datos elementales puede verse en la tabla B6.7.
Tipo de dato

Valor inicial

BOOL, SINT, INT, DINT


UINT
BYTE, WORD
REAL
TIME
STRING

0
0
0
0.0
T#0s
(cadena vaca)

Festo Didactic TP301

Tabla B6.7:
Valores iniciales
preestablecidos

B-76
Captulo 6

6.3

Programa

El programa para un control est dividido en unidades de organizacin


individuales, que son como sigue en el nivel de programacin:
Programas
Bloques de funcin
Funciones
Estas unidades de organizacin de programa estn disponibles en todos los lenguajes de programacin
IEC 1131-3 define una amplia gama de funciones estandarizadas y
bloques de funcin para tareas de control tpicas. Aparte de estas funciones especificadas y bloques de funcin, IEC 1131-3 permite la definicin de sus propias funciones y bloques de funcin. Los fabricantes o
los usuarios pueden as crear mdulos de software hechos a su medida para determinadas aplicaciones.
Funciones
Las funciones son mdulos de software que, cuando se les invoca,
proporcionan exactamente un resultado (elemento de datos). Esta es la
razn por la que en un lenguaje textual, la invocacin de una funcin
puede ser utilizada como un operando en una expresin.
Las funciones no pueden contener informacin de estado. Esto significa que la invocacin de una funcin con los mismos argumentos (parmetros de entrada) deben proporcionar el mismo resultado.
La suma de valores enteros INT o la funcin lgica OR con ejemplos
de funciones.
Las funciones y su invocacin puede representarse grficamente o en
forma de texto.

F nombre
X
Y
Z
Fig. B6.14:
Representacin
grfica de una funcin

Entradas

Salida

TP301 Festo Didactic

B-77
Captulo 6

Grficamente, una funcin se representa en forma de rectngulo. Todos los


parmetros de entrada se relacionan en el lado izquierdo, mientras que los
parmetros de salida se muestran en el lado derecho. En el interior del
rectngulo se indica el nombre de la funcin. Los parmetros formales de
entrada pueden especificarse a lo largo de los lados dentro del rectngulo.
Esto es necesario con algunos grupos de funciones, tales como las funciones de desplazamientos de bits, por ejemplo (fig. B6.15b). Para funciones
con entradas idnticas, como es el caso de la funcin de suma ADD (fig.
B6.15a) no se requieren nombres de los parmetros formales.
VAR
AT %QW4 : INT;
AT %IW9 : INT;
AT %IW7 : INT;
AT %MW1 : INT;
END_VAR

%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

Las entradas o salidas booleanas de una funcin pueden ser negadas,


es decir, invertidas especificando un crculo directamente fuera del rectngulo (fig. B6.16).

%Q5.3
%M1.1

AND

%Q4.1

Fig. B6.16:
Representacin de
negaciones Booleanas

Festo Didactic TP301

B-78
Captulo 6

Si se invoca una funcin, deben conectarse sus entradas y la salida de


la funcin.
La funcin suma ADD ilustrada en la fig. B6.16 procesa valores enteros INT, por lo cual, las variables direccionadas directamente tales
como %QW4 etc. estn declaradas como variables de tipo de dato
INT. De la misma forma, la funcin ADD podra aplicarse a valores del
tipo SINT o REAL.
Las funciones como estas, que funcionan para entrar parmetros de
tipos de datos diferentes, se denominan en IEC 1131-3 como funciones sobrecargadas, independientes del tipo. La Fig. B6.17 ilustra las
caractersticas de una funcin sobrecargada utilizando el ejemplo de
una funcin ADD.
Funcin ADD como ejemplo de funcin sobrecargada
Todos los tipos de datos que definen nmeros
son permisibles como parmetros de
entrada de resultado

ADD

a) Parmetros de Entrada del tipo INT


general
INT
INT

ADD

INT

ejemplo
VAR
AT %IW1 : INT;
AT %IW2 : INT;
AT %MW3 : INT;
END_VAR
%IW1
%IW2

ADD

%MW3

b) Parmetros de entrada del tipo SINT


ejemplo

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

TP301 Festo Didactic

B-79
Captulo 6

Si una funcin sobrecargada est limitada a un determinado tipo de


datos por el control p. ej., el tipo de datos INT como se muestra en
la fig B6.18 esto se conoce como una funcin con tipo. Las funciones
con tipo son reconocibles por el nombre de su funcin. El tipo se indica
aadiendo un guin de subrayado, seguido del tipo deseado.

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

Todos los tipos de datos para nmeros en coma flotante, tales


como REAL y para nmeros enteros tales como INT, UINT, etc.
estn contenidos en ANY_REAL y ANY_INT.

ANY_INT

Todos los tipos de datos para enteros tales como INT, UINIT, etc.

ANY_REAL

Todos los tipos de datos, definiendo nmeros en coma flotante


tales como REAL e LREAL

ANY_BIT

Todos los tipos de datos de secuencia de bits, tales como BOOL,


BYTE, WORD etc.

Festo Didactic TP301

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

&

Operacin AND de todas las entradas

>=1

Operacin OR de todas las entradas

=2k+1

Operacin OR-exclusiva de todas las entradas

NOT

Entrada negada

ANY_BIT
ANY_INT

***
IN
N

ANY_BIT

* * * = nombre

Tabla B6.10:
Funciones de
desplazamiento de bits

Nombre

Descripcin

SHL

Desplazar IN por N bits hacia la izquierda, llenar con ceros la derecha

SHR

Desplazar IN por N bits hacia la derecha, llenar con ceros la izquierda

ROR

Desplazar IN cclicamente por N bits hacia la derecha

ROL

Desplazar IN cclicamente por N bits hacia la izquierda

TP301 Festo Didactic

B-81
Captulo 6

***

ANY_BIT or ANY_NUM
...
...

ANY_BIT or ANY_NUM

* * * = nombre o smbolo

Nombre

Smbolo

Descripcin

GT

>

Mayor que (secuencia descendiente)

GE

>=

Mayor o iguall (secuencia monotnica)

EQ

Igual

LE

<=

menor o igual (secuencia monotnica)

LT

<

Menor que (rsecuencia ascendente)

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

Festo Didactic TP301

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

Multiplica todas las entradas

SUB

Resta la segunda entrada de la primera

DIV

Divide la primera entrada por la segunda

MOVE

:=

Asigna una entrada a una salida. no ampliable

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.

TP301 Festo Didactic

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

Tambin se dispone de la representacin grfica de bloques de funcin


(aparte de la representacin en uno de los lenguajes textuales). Estos
se representan por rectngulo de la misma forma que las funciones
(fig. B6.19). Los parmetros de entrada se introducen por la izquierda y
los parmetros de salida aparecen por la derecha. El tipo de bloque de
funcin se especifica dentro del rectngulo. A continuacin se introducen los nombres de los parmetros formales junto a los lados derecho
e izquierdo dentro del rectngulo o caja. El identificador, bajo el cual se
direcciona el mdulo, se direcciona como se ha descrito para el bloque
de funcin.
Si se utiliza un bloque de funcin, se le debe dar un identificador. Si
las entradas estn asignadas es decir, hay disponibles parmetros
de transferencia actuales entonces se utilizan estos para el procesamiento. Si las entradas no estn conectadas, entonces se accede de
nuevo a los valores almacenados en invocaciones anteriores o se utilizan los correspondientes valores iniciales.
La Fig. B6.20 muestra el uso (invocacin) del bloque de funcin
estndar para un contador.

BOOL
BOOL
INT

CTU
CU Q
R
PV CV

BOOL

Bloque de funcin tipo CTU


(contador incremental)

INT

Count_Pack
%I 1.3
10

CTU
CU Q
R
PV CV

Festo Didactic TP301

%Q2.5

Use una copia del bloque de


funcin CTU en un programa
de control

Fig. B6.20:
Uso (invocacin) del
bloque de funcin CTU
(contador incremental)

B-84
Captulo 6

La copia utilizada del bloque de funcin CTU lleva el identificador


Count_Pack. A cada flanco positivo de la entrada %I1.3 el valor actual
del contador se incrementa en 1 unidad. Cuando se alcanza el valor
preestablecido de 10, la salida Q del Count_pack, y con ello la salida
%Q2.5 asume una seal 1; en los dems casos se asume una seal 0.
Tambin es posible crear varias copias de uno y del mismo bloque de
funcin dentro de un programa de control, como se muestra en la fig.
B6.21.
TP
BOOL
TIME

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

Uso de varias copias del


bloque de funcinTP

TP301 Festo Didactic

B-85
Captulo 6

Bloques de funcin estndar


La Tabla B6.14 relaciona los bloques de funcin ms importantes estandarizados por IEC 1131-3.
SR

Bloque de funcin biestable (activacin prioritaria)

RS

Bloque de funcin biestable (desactivacin prioritaria)

CTU

Contador incremental

CTD

Contador decremental

TP

Pulso de tiempo

TON

Retardo a la conexin

TOF

Retardo a la desconexin

R_TRIG

Deteccin de flanco: flanco ascendente

F_TRIG

Deteccin de flanco: flanco descendente

Funciones definidas de usuario


Aparte de las funciones especificadas, IEC 1131-3 permite la definicin
de funciones propias .
Para la declaracin grfica se aplican las siguientes reglas:
Declaracin de la funcin dentro de la construccin FUNCTION...
END_FUNCTION.
Especificacin del nombre de la funcin y los nombres de los parmetros formales y tipos de datos de entradas y salidas de la funcin
Especificacin de los nombres y tipos de datos de variables internas
utilizadas en la funcin; para ello puede utilizarse una construccin
VAR... END_VAR. No pueden utilizarse copias de bloques de funcin como variables internas, ya que estas necesitaran el almacenamiento de informacin del estado.
Programacin del cuerpo de la funcin en uno de los lenguajes LD,
FBD, IL, o ST.

Festo Didactic TP301

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

(* Descripcin del interface externo *)

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

El uso de la funcin podra ser como el que se ha mostrado en la fig.


B6.23.

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

TP301 Festo Didactic

B-87
Captulo 6

Bloques de funcin definidos por el usuario


La generacin de los propios bloques de funcin por el usuario es una
caracterstica importante de IEC 1131-3.
Se aplican las siguientes reglas para una declaracin grfica:
Declaracin de bloques de funcin en una construccin FUNCTION_BLOCK... END_FUNCTION_BLOCK.
Especificacin del nombre del bloque de funcin y de los nombres
de los parmetros formales y tipos de datos de las entradas y salidas del bloque de funcin.
Especificacin de los nombres y tipos de datos de variables internas; puede emplearse una construccin VAR... END_VAR.
Programacin del cuerpo de la funcin en uno de los lenguajes LD,
FBD, IL, o ST.
Aqu no se ha tenido en cuenta el acceso de datos ampliado, tal como
las variables globales.

FUNCTION_BLOCK

BOOL
TIME

(* Descripcin del interface externo *)

Filtro_rebotes
S_ON
S_OFF
E_TIME

BOOL

(* Cuerpo del bloque de funcin: *)


(* programado en lenguaje FBD *)

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

Festo Didactic TP301

Fig. B6.24 :
Declaracin de un
bloque de funcin

B-88
Captulo 6

El bloque de funcin ilustrado en la fig. B6.24 representa un bloque de


funcin para la eliminacin de rebotes en las seales, consistentes en
dos parmetros de entrada, es decir, una entrada booleana para la
seal y una entrad de tiempo para el ajuste del tiempo de rebotes. El
parmetros de salida S_OFF suministra la seal de salida sin rebotes.

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

TP301 Festo Didactic

B-89
Captulo 6

El nombre del programa es "Luz_escalera". Tres variables booleanas


Interruptor_F, Interruptor_A y Luz, asignadas a dos entradas y una salida del PLC, han sido declaradas como variables internas. A esto se
aade la declaracin de una copia del bloque de funcin del tipo Pulse
Timer (TP).
El programa realiza la siguiente pequea tarea:
La luz de una escalera est encendida durante tres minutos, si se acciona uno de los dos interruptores; el de la puerta o el del apartamento.

Festo Didactic TP301

B-90
Captulo 6

TP301 Festo Didactic