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

Autómatas

programables
avanzado
Los propietarios del © tienen reservados todos los derechos. Cualquier reproducción, total o parcial de este
texto, por cualquier medio, o soporte sonoro, visual o informático, así como su utilización fuera del ámbito
estricto de la información del alumno comprador, sin la conformidad expresa por escrito de los propietarios
de los derechos, será perseguida con todo el rigor que prevé la ley y se exigirán las responsabilidades civiles
y penales, así como las reparaciones procedentes.

Autómatas programables avanzado

Autor: Rafael Embid Romero

D.L.: Z-1509-2012

ISBN: 978-84-15545-44-6

Imprime: El depositario, con autorización expresa de SEAS


Autómatas programables avanzado

ÍNDICE GENERAL
1.  Operaciones de salto y control de programa............................................................................. 9
ÍNDICE......................................................................................................................11
OBJETIVOS.................................................................................................................................................................. 13
INTRODUCCIÓN......................................................................................................................................................... 14
1.1.  Operaciones de salto incondicional..................................................................................................................... 15
1.2.  Operaciones de salto condicional en función del RLO........................................................................................ 17
1.3.  Operaciones de salto condicional en función de “RB” u “OV/OS”..................................................................... 18
1.4.  Operaciones de salto condicional en funcion de “A1” y “A0”........................................................................... 19
1.5.  Finalizar módulos.................................................................................................................................................. 20
1.6. LOOP...................................................................................................................................................................... 22
1.7.  Llamar funciones y módulos con “CALL”............................................................................................................ 23
1.8.  Llamar funciones y módulos con “CC” Y “UC”.................................................................................................... 25
1.9.  Llamar funciones de sistema integradas............................................................................................................ 26
1.10.  Función master control relay.............................................................................................................................. 27
1.11.  Marca de ciclo..................................................................................................................................................... 29
RESUMEN..................................................................................................................................................................... 31

2.  Operaciones aritméticas, conversión, rotación y desplazamiento.......................... 33


ÍNDICE......................................................................................................................35
OBJETIVOS.................................................................................................................................................................. 37
INTRODUCCIÓN......................................................................................................................................................... 38
2.1. Enteros................................................................................................................................................................... 39
2.2.  Operaciones aritméticas con números reales..................................................................................................... 41
2.3.  Operaciones de conversión.................................................................................................................................. 43
2.4.  Operaciones de desplazamiento.......................................................................................................................... 45
2.5.  Operaciones de rotación....................................................................................................................................... 47
RESUMEN..................................................................................................................................................................... 49

3
Índice General

3.  Bloques de programa................................................................................................................................ 51


ÍNDICE......................................................................................................................53
OBJETIVOS.................................................................................................................................................................. 55
INTRODUCCIÓN......................................................................................................................................................... 56
3.1.  Bloques de programa............................................................................................................................................ 57
3.2.  Tipo de bloques..................................................................................................................................................... 58
3.3.  Módulos de función............................................................................................................................................... 59
3.4.  Tabla de declaración de variables........................................................................................................................ 60
3.5.  Llamadas a bloques.............................................................................................................................................. 61
3.6.  Ejemplo de función “FC”....................................................................................................................................... 63
3.7.  Bloques de datos “DB”......................................................................................................................................... 65
3.8.  Bloques de datos global........................................................................................................................................ 66
3.9.  Ejemplo de bloque de datos global...................................................................................................................... 69
3.10.  Formato de datos en los DB............................................................................................................................... 71
3.11.  Bloques de función “FB”.................................................................................................................................... 73
3.12.  Llamada al “FB”.................................................................................................................................................. 74
3.13.  Multidistancia: un “DB” de instancia para cada instancia............................................................................... 76
3.14.  Multinstancia: un “DB” de instancia para varias instancias de un “FB”......................................................... 78
RESUMEN..................................................................................................................................................................... 79

4.  Tratamiento de señales analógicas................................................................................................ 81


ÍNDICE......................................................................................................................83
OBJETIVOS.................................................................................................................................................................. 85
INTRODUCCIÓN......................................................................................................................................................... 86
4.1.  Tratamiento de señales analógicas...................................................................................................................... 87
4.2.  Entrada analógica.................................................................................................................................................. 88
4.3.  Salida analógica.................................................................................................................................................... 90
4.4.  Direccionamiento de las señales analógicas...................................................................................................... 91
4.5.  Función de desescalado de salidas analógicas (FC106).................................................................................... 94
RESUMEN..................................................................................................................................................................... 97

4
Autómatas programables avanzado

5.  Eventos de alarma y error asíncrono............................................................................................. 99


ÍNDICE....................................................................................................................101
OBJETIVOS................................................................................................................................................................ 103
INTRODUCCIÓN....................................................................................................................................................... 104
5.1..Eventos de alarma y error asíncrono................................................................................................................... 105
5.2..Módulo de arranque OB100.................................................................................................................................. 107
5.3..Alarma cíclica OB35.............................................................................................................................................. 108
5.4..Alarma horaria OB10............................................................................................................................................. 109
5.5..Interrupción de retardo OB20............................................................................................................................... 110
5.6..Más OB’S............................................................................................................................................................... 111
RESUMEN................................................................................................................................................................... 113

6.  Direccionamiento indirecto y matrices...................................................................................... 115


ÍNDICE....................................................................................................................117
OBJETIVOS................................................................................................................................................................ 119
INTRODUCCIÓN....................................................................................................................................................... 120
6.1.  Direccionamiento indirecto................................................................................................................................. 121
6.2.  Operaciones con el registro de direcciones...................................................................................................... 126
6.3.  Array - matrices................................................................................................................................................... 127
RESUMEN................................................................................................................................................................... 131

5
Índice General

7.  Regulación PID............................................................................................................................................. 133


ÍNDICE....................................................................................................................135
OBJETIVOS................................................................................................................................................................ 137
INTRODUCCIÓN....................................................................................................................................................... 138
7.1.  Concepto del control proporcional integral derivativo (PID)............................................................................. 139
7.2. Parametrización................................................................................................................................................... 140
7.3.  Regulación continua “FB 41” “CONT_C”........................................................................................................... 141
7.4.  Regulación discontinua “FB 42” “CONT_S”...................................................................................................... 148
7.5.  Formación de impulsos “FB 43” “PULSEGEN”.................................................................................................. 153
7.6.  Ejemplo con el bloque “PULSEGEN”.................................................................................................................. 161
RESUMEN................................................................................................................................................................... 165

8.  PROFIBUS (Configuración en Siemens)....................................................................................... 167


ÍNDICE....................................................................................................................169
OBJETIVOS................................................................................................................................................................ 171
INTRODUCCIÓN....................................................................................................................................................... 172
8.1.  Conceptos fundamentales.................................................................................................................................. 173
8.2.  Clasificación de las redes................................................................................................................................... 175
8.3.  Características generales de una red PROFIBUS.............................................................................................. 177
8.4. PROFIBUS-DP...................................................................................................................................................... 180
8.5.  Profibus FDL (Send/Receive).............................................................................................................................. 212
8.6.  Protocolo S7........................................................................................................................................................ 221
8.7.  Protocolo FMS..................................................................................................................................................... 225
RESUMEN................................................................................................................................................................... 231

6
Autómatas programables avanzado

9.  Bloques de Organización y “SFC’s” de Control y Gestión............................................... 233


ÍNDICE....................................................................................................................235
OBJETIVOS................................................................................................................................................................ 237
INTRODUCCIÓN....................................................................................................................................................... 238
9.1.  Bloques de organización..................................................................................................................................... 239
9.2.  OB’s de alarma horaria (de OB10 a OB17)........................................................................................................ 243
9.3.  OB’s de alarma de retardo (de OB20 a OB23)................................................................................................... 247
9.4.  OB’s de alarma cíclica (de OB30 a OB38)......................................................................................................... 249
9.5.  OB’s de alarma de proceso (de OB40 a OB47)................................................................................................. 251
9.6.  OB de fallo de alimentación (OB81)................................................................................................................... 254
9.7.  OB’s de arranque (OB100, OB101 y OB102)..................................................................................................... 257
9.8.  Ajuste de hora con el SFC 0 “SET_CLK”........................................................................................................... 263
9.9.  Leer la hora con el SFC 1 “READ_CLK”............................................................................................................. 264
9.10.  Ajustar la hora y establecer el estado del reloj con el SFC 100 “SET_CLKS”.............................................. 265
9.11.  SFC’s para gestionar el contador de horas de funcionamiento..................................................................... 267
9.12.  Gestión de contadores de horas de funcionamiento con SFC 101 “RTM”................................................... 268
9.13.  Ajuste de contadores de horas de funcionamiento con SFC 2 “SET_RTM”................................................. 270
9.14.  Arrancar y parar el contador de horas de funcionamiento con SFC 3 “CTRL_RTM”................................... 271
9.15.  Leer el contador de horas de funcionamiento con el SFC 4 “READ_RTM”.................................................. 272
9.16.  Leer el cronómetro del sistema con SFC 64 “TIME_TCK”............................................................................. 273
9.17.  SFC’s para gestionar alarmas horarias............................................................................................................ 274
9.18.  Características de los SFC’s 28 a 31............................................................................................................... 275
9.19.  Ajustar una alarma horaria con el SFC 28 “SET_TINT”.................................................................................. 277
9.20.  Anular una alarma horaria con el SFC 29 “CAN_TINT”.................................................................................. 279
9.21.  Activar una alarma horaria con el SFC 30 “ACT_TINT”.................................................................................. 280
9.22.  Consultar una alarma horaria con el SFC 31 “QRY_TINT”............................................................................. 281
9.23.  Listas de SFC’s.................................................................................................................................................. 282
9.24.  Listas de SFB’s.................................................................................................................................................. 286
RESUMEN................................................................................................................................................................... 289

7
Autómatas programables avanzado
1 1
DIDÁCTICA
UNIDAD

1.  Operaciones de salto y control de programa


1: Operaciones de salto y control de programa

ÍNDICE
OBJETIVOS.................................................................................................................................................................. 13
INTRODUCCIÓN......................................................................................................................................................... 14
1.1.  Operaciones de salto incondicional..................................................................................................................... 15
1.2.  Operaciones de salto condicional en función del RLO........................................................................................ 17
1.3.  Operaciones de salto condicional en función de “RB” u “OV/OS”..................................................................... 18
1.4.  Operaciones de salto condicional en funcion de “A1” y “A0”........................................................................... 19
1.5.  Finalizar módulos.................................................................................................................................................. 20
1.6. LOOP...................................................................................................................................................................... 22
1.7.  Llamar funciones y módulos con “CALL”............................................................................................................ 23
1.8.  Llamar funciones y módulos con “CC” Y “UC”.................................................................................................... 25
1.9.  Llamar funciones de sistema integradas............................................................................................................ 26
1.10.  Función master control relay.............................................................................................................................. 27
1.11.  Marca de ciclo..................................................................................................................................................... 29
RESUMEN..................................................................................................................................................................... 31

11
1: Operaciones de salto y control de programa

OBJETIVOS
■ Conocer las distintas formas de representar un programa.

■ Conocer como se puede estructurar un programa.

■ Razonar los posibles inconvenientes que pueden salir a la hora de estructurar un programa.


Conocer los distintos objetos de programación existentes en un autómata programable,
como son entradas, salidas, marcas, etc.

■ Analizar las operaciones básicas de programación.

13
Autómatas programables avanzado

INTRODUCCIÓN

Un autómata es una máquina formada por elementos La programación del autómata pasa por los siguientes
de hardware capaces de comunicarse físicamente pasos:
con el proceso para: ■■ Determinar qué debe hacer el sistema de control y en qué
■■ Recoger el conjunto de variables (digitales o analógicas) orden (por ejemplo, mediante un diagrama de flujo, una
que definen el estado del mismo (señales de entrada). descripción literal o un grafo Grafcet).
■■ Enviar otro conjunto de variables que modifiquen dicho ■■ Identificar los componentes (señales) de entrada y salida
estado en un sentido predeterminado (señales de salida). al autómata.
El software nos ayuda a realizar dichas operaciones ■■ Representar mediante un modelo el sistema de control,
con el hardware del autómata. indicando todas las funciones que intervienen, las
El software se clasifica en dos grandes grupos: relaciones entre ellas, y la secuencia que deben seguir.
Esta representación puede ser:
■■ Sistemas operativos, residentes en el propio autómata,
que se encargan de establecer las secuencias de ■■ Algebraica: instrucciones literales.
intercambios de información, interpretar y ejecutar las ■■ Gráfica: símbolos gráficos.
órdenes de usuario, y vigilar por el correcto funcionamiento
del equipo. ■■ Asignar direcciones de entrada/salida o internas a cada
■■ Software de edición/depuración de programas, que uno de los componentes que aparecen en el modelo.
permite al usuario la introducción del programa sobre un ■■ Codificar la representación anterior en instrucciones o
soporte físico (cinta, disco), la modificación del mismo símbolos inteligentes por la unidad de programación.
en la puesta a punto, la obtención de la documentación
■■ Transferir las instrucciones obtenidas a la memoria del
pertinente y la creación de copias de seguridad.
autómata desde la unidad de programación.
■■ Depurar el programa y obtener una copia de seguridad.

14
1: Operaciones de salto y control de programa

1.1.  Operaciones de salto incondicional


Instrucciones “SPA” y “SPL”.

Las operaciones de salto incondicional (SPA) interrumpen el desarrollo normal del


programa, haciendo que el mismo salte a una meta determinada, definiendo esta
el punto en que deberá continuar el programa. Dicho salto se efectúa de forma
independiente de las condiciones.

Salto SPA:

U E 1.0 //se carga en el RLO el valor de la entrada 1.0


//se salta de forma incondicional a la línea con meta "AQUÍ" , con
SPA AQUI
independencia del estado de E1.0
NOP 0 //esta línea no se ejecuta nunca (es saltada)
AQUÍ: U E 2.0 //aquí continúa la ejecución del programa
//se introduce el resultado en la salida 3.0 en función del estado de
= A 3.0
E2.0

La operación de salto a meta (SPL) es un distribuidor de saltos seguido de una serie


de saltos incondicionales a metas determinadas (lista de saltos). El salto de la lista se
escoge según el valor contenido en el ACU1, es decir, si el ACU1 vale 0 se escogerá
el primer salto incondicional (SPA), si vale 1 se saltará al segundo salto. Si el valor se
encuentra fuera de la lista se salta a la meta especificada en SPL.

Una meta se compone de 4 caracteres como máximo. El primer carácter debe


ser siempre una letra, no importando si el resto son números o letras. La meta se
especifica normalmente en el operando de la instrucción de salto y seguida de dos
puntos frente a la línea que posee la meta. Estos saltos no afectan a ningún registro.

15
Autómatas programables avanzado

Estructura:

L MB100 //se carga en el ACU1 un byte


SPL DEF //se carga a DEF si el valor de ACU1 no está en la lista
SPA CERO //se salta a CERO si ACU1 vale 0
SPA UNO //se salta a UNO si ACU1 vale 1
SPA DOS //se salta a UNO si ACU1 vale 2
DEF: ...
...
BEA
CERO: ...
...
BEA
UNO: ...
...
BEA
DOS: ...
...
BEA

Salto SPL:

L MB100 //se carga en el ACU1 un valor de un módulo de datos


SPL NORM //se salta a NORM si el valor de ACU1 no está en lista
SPA UNO //se salta a UNO si ACU1 vale 0
SPA CONT //se salta a CONT si ACU1 vale 1
SPA DOS //se salta a DOS si ACU1 vale 2
NORM: SPA CONT //se salta a CONT de forma incondicional
UNO: U E 0.0 //instrucción meta del salto UNO
SPA CONT //se salta a CONT de forma incondicional
DOS: U E 1.0 //instrucción meta del salto DOS
SPA CONT //se salta a CONT de forma incondicional
CONT: = A 2.0 //aquí se salta finalmente, continuando el programa

16
1: Operaciones de salto y control de programa

1.2.  Operaciones de salto condicional en función del


RLO
Instrucciones: “SPB”, “SPBN”, “SPBB”, “SPBNB”.

Estas instrucciones efectúan un salto en el programa hacia una meta determinada,


para el caso de cumplir la condición que necesitan:

SPB: salto si RLO=1


SPBN: salto si RLO=0
SPBB: salto si RLO=1 y RB=1
SPBNB: salto si RLO=0 y RB=1
En todas estas instrucciones, si la condición no es cumplida y no se realiza el salto, se
modifican los siguientes registros:

RO=0
STA=1
RLO=1
ER=0
En SPBB y SPBNB se almacena el RLO en el bit RB de la palabra de estado antes de
efectuar el salto.

Registros afectados: RB, OR, STA, RLO, ER

Salto SPB:

U E 2.0//se carga en el RLO el valor de la entrada 2.0


SBA AQUI//se carga a la línea con meta “AQUI” si el RLO=1
U E 1.0//esta línea no se ejecuta si se salta
AQUÍ: U E 3.0//aquí continúa la ejecución del programa a
= A 0.0//se introduce el resultado en la salida 0.0

Como podemos observar en el ejemplo, el resultado de la salida 0.0 depende


primeramente del valor de la entrada 2.0, ya que ella decide si se tiene en cuenta
también la entrada 1.0 en el resultado final.

17
Autómatas programables avanzado

1.3.  Operaciones de salto condicional en función de


“RB” u “OV/OS”
Instrucciones: “SPBI”, “SPBIN”, “SPO”, “SPS”.

Estas instrucciones efectúan un salto en el programa hacia una meta determinada en


el caso de cumplir la condición que necesitan:

SPBI: salto si RB=1

SPBIN: salto si RB=0

SPO: salto si OV=1

SPS: salto si OS=1

Las operaciones SPBI y SPBIN ponen los bits OR y ER de la palabra de estado a 0 y


el bit STA a 1. La operación SPS pone el bit OS a 0.

Registros afectados: OR, ER, STA, OS

Salto SPS:

SPS AQUÍ
//se salta a la línea con meta “AQUÍ” si OV=1
SPA SEGU //esta línea no se ejecuta si
OV=1
AQUI:SET //se fuerza el RLO a 1
= A 1.0 //con la salida 1.0 indicamos si hubo un error
Previo en la anterior ejecución del programa
SEGU:U E 3.0//aquí continúa la ejecución del programa normalmente
= A 0.0//se introduce el resultado en la salida 0.0

18
1: Operaciones de salto y control de programa

1.4.  Operaciones de salto condicional en funcion de


“A1” y “A0”.
Instrucciones: “SPZ”, “SPN”, “SPP”, “SPM”, “SPMZ”, “SPPZ”, “SPU”.

Estas instrucciones efectúan un salto en el programa hacia una meta determinada,


para el caso de cumplir la condición que necesitan:

SPZ: salto si resultado=0 (ACU 1)

SPN: salto si resultado no es 0

SPP: salto si resultado es mayor que cero

SPM: salto si resultado es menor que cero

SPMZ: salto si resultado es menor o igual que cero

SPPZ: salto si resultado es mayor o igual que cero

SPU: salto si el resultado no es válido (uno de los operandos en una


operación de coma flotante no es un número en coma flotante)

A continuación se muestra el estado de A1 y A0 tras una operación con los


acumuladores:

A1 A0 Resultado del cálculo Operación de salto posible


0 0 Igual a 0 SPZ
1ó0 0ó1 Distinto de 0 SPN
1 0 Mayor que 0 SPP
0 1 Menor que 0 SPM
0ó1 0ó0 Mayor o igual que 0 SPPZ
0ó0 1ó1 Menor o igual que 0 SPMZ
1 1 UO (no admisible) SPU

19
Autómatas programables avanzado

1.5.  Finalizar módulos


Instrucciones: “BEA” y “BEB”.

Durante el ciclo del autómata programable, el sistema operativo ejecuta un programa


estructurado módulo a módulo. La operación fin de módulo es la que finaliza el módulo
en ejecución.

BEA finaliza la ejecución del módulo actual y devuelve el control al módulo que llamó
módulo finalizado. Esta instrucción se ejecuta sin depender del RLO ni de cualquier
otra condición.

Ejemplo:1:

U E 1.0 //se introduce en el RLO el valor de la entrada 1.0


SPB
NEXT //si la entrada 1.0 salta a meta NEXT
L EW 4
T EW 10
U E 6.0
U E 6.1
S M 12.0
BEA //aquí finaliza el módulo de forma incondicional
NEXT:
NOP 0

Ejemplo:2:

U E 1.0//se introduce en el RLO el valor de la entrada 1.0


SPB
NEXT//si la entrada 1.0 salta a meta NEXT
L EW 4
T EW 10
U E 6.0
U E 6.1
S M 12.0
BEA//aquí finaliza el módulo de forma incondicional
NEXT: NOP 0
BEA//fin de módulo
U E 1.1//estas instrucciones nunca se ejecutarían
S A 4.0

20
1: Operaciones de salto y control de programa

BEB finaliza la ejecución del módulo actual y devuelve el control al módulo que llamó
módulo finalizado. Esta acción se realiza si el RLO es 1. Si no es así se continúa la
ejecución del actual módulo, pero con el RLO a 1.

U E 1.0//se introduce en el RLO el valor de la entrada 1.0


BEB//si la entrada 1.0 vale 1 el módulo acaba aquí
U E 2.0
= A 3.0
BEA//aquí finaliza el módulo de forma incondicional

Si el módulo que finaliza es el OB1 se finaliza el ciclo de ejecución del programa,


volviendo a comenzar uno nuevo.

21
Autómatas programables avanzado

1.6.  LOOP
Instrucción: “LOOP”.

La operación LOOP sirve para llamar varias veces un segmento del programa. Esta
operación decrementa la palabra baja del ACU 1 en 1.

Después se comprueba el valor depositado en la palabra baja del ACU 1. Si no es igual


a 0, se ejecuta un salto a la meta indicada en la operación LOOP. En caso contrario, se
ejecuta la siguiente operación normalmente.

Observaciones:

■■ El contador de bucles es un entero (de 16 bits) sin signo.

■■ El salto puede ser tanto hacia delante como hacia atrás.

■■ El salto sólo se puede ejecutar dentro de un bloque.

Registros afectados: ACU 1

L+5 //Hacemos el ACU 1 igual a 5


PROX: T MW 10 //transferimos el valor del ACU 1 a la memoria de datos
- //En estos guiones estaría el segmento del programa
- //que se va a ejecutar 5 veces
L MW 10 //leemos el valor de la memoria de datos en ACU1
LOOP
PROX //decrementamos ACU 1 y saltamos a PROX si no es
cero

Hay que tener precaución con el valor que haya en el ACU 1, ya que si ejecutamos
LOOP con un valor de ACU 1 igual a 0 el bucle se ejecutará 65535 veces. Tampoco
se recomienda introducir valores enteros negativos en el ACU 1.

22
1: Operaciones de salto y control de programa

1.7.  Llamar funciones y módulos con “CALL”


Instrucción: “CALL”.

La operación CALL se emplea para llamar funciones (FC’s) y módulos de función (FB’s)
creados para el usuario y para el programa en cuestión, o adquiridos en Siemens
como módulos de función estándar. La operación CALL llama la función FC o módulo
FB indicado como operando, independientemente del resultado lógico o cualquier
otra condición.

Si se desea llamar un módulo de función con la operación CALL, se deberá asignar un


módulo de datos de instancia (DB de instancia).

La llamada de una función (FC) o de un módulo de función (FB) puede programarse,


es decir, es posible asignar operandos a la llamada. El programa ejecutará con estos
operandos la función (FC) o el módulo de función (FB). Para ello hay que indicar
los operandos que se desean usar para ejecutar la función o el módulo de función.
Estos parámetros se denominan parámetros actuales (entradas, salidas, marcas de
memoria...).

El programa que contiene la función o el módulo de función tiene que poder acceder a
estos parámetros actuales, por lo que se deberá indicar en el programa el parámetro
formal que corresponda al parámetro actual. Si no se especifica la correspondencia en
módulos de función el programa accederá a través del módulo de datos de instancia
a los datos del parámetro formal. En la llamada a funciones todos los parámetros
formales tienen que ser asignados a parámetros actuales.

La lista de parámetros formales es parte integrante de la operación CALL. El parámetro


actual que se indica al llamar un módulo de función tiene que ser del mismo tipo de
datos que el parámetro formal.

Los parámetros actuales empleados al llamar una función o un módulo de función se


suelen indicar con nombres simbólicos. El direccionamiento absoluto de parámetros
actuales sólo es posible con operandos cuyo tamaño máximo no supere una palabra
doble.

Registros afectados: ninguno.

Llamada a un FB con un DB de instancia y parámetros de módulo:


CALL FB40,DB41 //se llama al módulo FB40 con el módulo de instancia
DB41
ON1: = E1.0 //ON1 (parámetro formal) es asignado a E1.0 (p. actual)
ON2: = MW2 //ON2 (parámetro formal) es asignado a MW2 (p. actual)
OFF1: = MD20 //OFF1 (parámetro formal) es asignado a MD20 (p. actual)
L DB20 //el programa accede al parámetro formal OFF1.

23
Autómatas programables avanzado

En el ejemplo anterior se ha supuesto que los parámetros formales pertenecen a los


siguientes tipos de datos:

ON1: BOOL (binario)

ON2: WORD (palabra)

OFF1: DWORD (palabra doble)

Llamada a un FB con un DB de instancia y parámetros de módulo:

CALL FC80 //se llama la función FC80


INK1: = M1.0 //INK1 (p. formal) es asignado a
M 1.0 (p. actual)
INK2: = EW2 //INK2 (p. formal) es asignado a
EW2 (p. actual)
OFF: = AW4 //OFF (p. formal) es asignado a
AW4 (p. actual)

En el ejemplo anterior se ha supuesto que los parámetros formales pertenecen a los


siguientes tipos de datos:

INK1: BOOL (binario)

INK2: INT (entero)

OFF: WORD (palabra)

Es posible crear una función que dé un valor de retorno. Si se desea crear por ejemplo
una operación aritmética con números de coma flotante, entonces puede utilizar este
valor de retorno como salida para el resultado de la función. Como nombre de la
variable puede introducirse “RE_VAL” y como tipo de datos REAL. Al llamar después
esta función en el programa se ha de proveer la salida RET_VAL de una dirección de
palabra doble de forma que pueda acoger el resultado de 32 bits de la operación
aritmética.

24
1: Operaciones de salto y control de programa

1.8.  Llamar funciones y módulos con “CC” Y “UC”


Instrucciones: “CC” y “UC”.

Estas operaciones se emplean para llamar funciones (FC) creadas para el programa
del mismo modo como se utiliza la operación CALL. Sin embargo, no es posible
transferir parámetros.

CC llama la función indicada como operando si el RLO=1.

UC llama la función indicada como operando, independientemente de cualquier


condición.

Las operaciones CC y UC pueden llamar una función con direccionamiento directo o


indirecto de la memoria, o a través de una FC transferida como parámetro. El área de
memoria es FC más el número del FC.

Máx. área de direccionamiento directo Máx. área de direccionamiento indirecto


[DBW]

[DIW]

0 a 65535 [LW] 0 a 65534

[MW]

El nombre del parámetro formal o nombre simbólico para el caso de llamar una FC a
través de una FC transferida como parámetro es BLOCK_FC (los parámetros de tipo
BLOCK_FC no pueden utilizarse con la operación CC en módulos FC).

Registros afectados: ninguno.

Llamada a un FB con un DB de instancia y parámetros de módulo:

CC FB12//llamar a FB12 si RLO=1


UC FB12//llamar a FB12 independientemente del RLO

25
Autómatas programables avanzado

1.9.  Llamar funciones de sistema integradas


Instrucción: “CALL”.

La operación CALL puede emplearse también para llamar funciones del sistema (SFC)
y módulos de función del sistema (SFB) integrados en el sistema operativo S7.

Cada SFB o SFC ejecuta una función estándar determinada. Por ejemplo, si se desea
averiguar la hora actual del sistema se utiliza la siguiente operación:

CALL SFC64

La operación de llamada CALL solamente puede llamar a una SFC o un SFB con
direccionamiento directo.

26
1: Operaciones de salto y control de programa

1.10.  Función master control relay


Instrucciones: “MCRA”, “MCRD”, “MCR(:”, “)MCR:”

El Master Control Relay (MCR) se emplea para inhibir el funcionamiento de una


determinada parte del programa (secuencia de instrucciones que escribe un cero en
lugar del valor calculado, o bien no modifican el valor de memoria existente). Las
siguientes operaciones dependen del MCR:

=
S
R
T (con bytes, palabras o palabras dobles)

Se utiliza en los esquemas de relés para activar y desactivar el flujo de señales:

■■ Si el bit de MCR es igual a 1 “ON” --> Ejecución normal.

■■ Si bit MCR=0 “Desactivación”, el MCR afecta a las siguientes instrucciones:

□□ Asignación “=” : Escribe 0.

□□ Set y Reset “S y R” : no escribe. Permanecen en su estado actual.

□□ Transferencia “T” de bytes, palabras y doble palabras.

□□ Escribe 0.

27
Autómatas programables avanzado

MCRA //Se activa el área MCR


U E0.0 //Se consulta
MCR( //Se inicia el área MCR:Si RLO=1 -->MCR ON Si RLO=0 -->
MCR OFF
//Si MCR OFF --> A4.0=0 sin considerar
U E0.1 E0.1
= A4.0
U E0.2 //Si MCR OFF --> Mantiene el valor de A4.1
S A4.1
U E0.3
R A4.1
L MW20 //Si MCR OFF --> Se transfiere 0 a AW10
T AW10
)MCR //Se finaliza área MCR
MCRD //Se desactiva área MCR
U E1.0 //Como está fuera del área MCR no depende del bir MCR
= A5.0

28
1: Operaciones de salto y control de programa

1.11.  Marca de ciclo


Una marca de ciclo es una marca que cambia periódicamente de valor binario.

Se define en las propiedades de la CPU: HW Config → CPU → Pestaña “Ciclo/Marca


de ciclo”

Para crear una marca de ciclo:

1. Introducir la dirección del byte de marcas.

2. Activar la casilla de verificación.

3. “Guardar y compilar” y “Cargar en módulo”.

Cada bit del byte de marca de ciclo lleva asignada una duración de periodo / frecuencia
en seg:

Bit 7 6 5 4 3 2 1 0
Duración del periodo (seg.): 2 1,6 1 0,8 0,5 0,4 0,2 0,1

U M100.3 //Si defino la marca 100 como marca de ciclo


= A4.0 //el led parpadeará con una frecuencia de 0,5 seg. frecuentes.

29
1: Operaciones de salto y control de programa

RESUMEN

Programar un autómata consiste en introducirle una secuencia de órdenes obtenidas
desde un modelo de control, según la codificación determinada.


En los autómatas se permiten estructuras de programación tan complejas como
aquellos, sin perder por ello la facilidad de comprensión y visión de conjunto.


La tendencia de los lenguajes de programación pasa por integrar las diferentes formas
de representación en un lenguaje mixto, que combine la claridad de los lenguajes
gráficos para las funciones combinacionales y secuenciales, con la potencia y
compacidad de los literales para el cálculo matemático y los tratamientos de textos.

■ Los lenguajes de programación deben pues:

■■ Potenciar el uso de estructuras de programación avanzadas aumentando las


instrucciones de expansión disponibles.
■■ Permitir la utilización de lenguajes literales dentro de un programa gráfico, bien
incluyéndolos como líneas de instrucciones dentro del programa, bien editándolos
como subrutinas de libre acceso desde él.
■■ Desarrollar herramientas de edición que permitan al usuario definir sus propias
sentencias, que podrá almacenar como bloques de expansión dentro de la librería
disponible.

31
Autómatas programables avanzado
2 2
DIDÁCTICA
UNIDAD

2.  Operaciones aritméticas, conversión, rotación y


desplazamiento
2: Operaciones aritméticas, conversión, rotación y desplazamiento

ÍNDICE
OBJETIVOS.................................................................................................................................................................. 37
INTRODUCCIÓN......................................................................................................................................................... 38
2.1. Enteros................................................................................................................................................................... 39
2.2.  Operaciones aritméticas con números reales..................................................................................................... 41
2.3.  Operaciones de conversión.................................................................................................................................. 43
2.4.  Operaciones de desplazamiento.......................................................................................................................... 45
2.4.1.  Desplazar palabras................................................................................................................................................ 45
2.4.2.  Desplazar doble palabras........................................................................................................................................ 45
2.4.3.  Desplazar enteros.................................................................................................................................................. 46
2.4.4.  Desplazar dobles enteros....................................................................................................................................... 46
2.5.  Operaciones de rotación....................................................................................................................................... 47
RESUMEN..................................................................................................................................................................... 49

35
2: Operaciones aritméticas, conversión, rotación y desplazamiento

OBJETIVOS
■ Conocer la forma de operar con operaciones aritméticas de alto nivel.

■ Conocer los formatos de variables y saber como pasar de un formato a otro.


Saber manipular una variable (sin perder la información original), utilizando operaciones de
rotación o de desplazamiento.

■ Saber tratar las distintas variables en función de sus formatos.


Analizar como convertir una variable para tenerla en el mejor formato para realizar
operaciones.

37
Autómatas programables avanzado

INTRODUCCIÓN

Los bloques presentan tres tipos de variables ■■ Textos programados escritos en alguna unidad de
asociadas: memoria o dispositivo exterior.
■■ Condiciones de operación, que definen la habilitación y ■■ Variables numéricas más frecuente en:
control del bloque. ■■ Registros internos.
■■ Operandos de función, sobre los que actúan las sentencias ■■ Temporizadores o contadores (valores actuales).
preprogramadas en el bloque funcional.
■■ Canales de datos de 8, 16 ó 32 bits de entrada o
■■ Salidas asociadas, cuyo estado depende de la ejecución salida (por ejemplo, datos binarios resultantes de la
de la función del bloque. conversión A/D en una entrada analógica).
■■ Los operandos de función pueden a su vez ser de dos Aunque los datos internos manejados por el autómata
tipos: siempre son binarios, el usuario puede definirlos
■■ Parámetros iniciales, que una vez fijados por programa en su programa sobre distintas bases: decimal,
o transferidos desde consola permanecen normalmente hexadecimal, BCD, etc., encargándose el intérprete
inalterados. de su conversión automática al binario para su
■■ Datos de operación, variables o constantes contenidas operación.
en palabras de 8, 16 ó 32 bits que reflejan el estado de
entradas/salidas, valores internos, resultados, etc.
■■ Estos datos, numéricos o alfanuméricos, que aparecen
como operandos pueden corresponder a:
■■ Números o caracteres ASCII constantes definidos en
el programa.

38
2: Operaciones aritméticas, conversión, rotación y desplazamiento

2.1.  Enteros
Para enteros instrucciones: “+I”, “–I”, “*I”, “/I”

Para dobles enteros instrucciones: “+D”, “–D”, “*D”, “/D”

■■ Combinan el contenido de ACU1 y ACU2.

■■ El resultado se deposita en ACU1 y el ACU2 permanece inalterado.

■■ En el S7-400 después de la operación: ACU2 􀃅 ACU3 􀃅 ACU4

■■ Son operaciones incondicionales del RLO y no lo afectan.

La instrucción de suma “+I”, “+D” suma el contenido de ACU2 con ACU1 y el resultado
lo almacena en ACU1.

En el caso de sumar dos enteros esta operación actúa sobre las palabras bajas de los
acumuladores y el resultado lo almacena en la palabra baja del ACU1.

L8
L9
+I //ACU2+ACU1 → ACU1=17; ACU2=8

La instrucción de resta “–I”, “–D” resta el contenido de ACU2 con ACU1 y el resultado
lo almacena en ACU1.

L 10
L3
–I //ACU2-ACU1 → ACU1=7; ACU2=10

La instrucción de multiplicación “*I”, “*D” multiplica el contenido de ACU2 por ACU1 y


el resultado lo almacena en ACU1.

Si se multiplican dos enteros el resultado se almacena como doble entero en ACU1.

L L#2
L L#100
*D //ACU2*ACU1 → ACU1=200; ACU2=2

39
Autómatas programables avanzado

La instrucción de división “/I”, “/D” divide el contenido de ACU2 entre ACU1 y el


resultado se almacena de dos formas distintas según se multipliquen enteros y dobles
enteros:

■■ En caso de división de enteros el resultado se almacena en ACU1 en forma de


dos enteros de 16 bits:

■■ En caso de dividir dos enteros dobles el cociente se almacena en ACU1 y el


resto de la división se obtiene realizando la operación “MOD”.

L ED10
L MD14
/I
T MD20 //Almacena el cociente
MOD
T MD24 //Almacena el resto

40
2: Operaciones aritméticas, conversión, rotación y desplazamiento

2.2.  Operaciones aritméticas con números reales


Instrucciones: “+R”, “–R”, “*R”, “/R”

La instrucción de suma “+R”, suma el contenido de ACU2 (32bits) con ACU1 (32bits)
y el resultado lo almacena en ACU1 (32 bits).

L 1.0
L 2.4
+R //ACU2+ACU1 → ACU1=3.4; ACU2=1.0

La instrucción de resta “–R” resta el contenido de ACU2 (32bits) con ACU1 (32bits) y
el resultado lo almacena en ACU1 (32 bits).

L 25.0
L 13.4
–R //ACU2-ACU1→ACU1=11.6; ACU2=25.0

La instrucción de multiplicación “/R” divide el contenido de ACU2 (32bits) entre ACU1


(32bits) y el resultado lo almacena en ACU1 (32 bits).

L 10.0
L 2.0
/R //ACU2*ACU1 → ACU1=5.0; ACU2=10.0

Instrucción “ABS”: Valor absoluto de ACU1, y el resultado se deposita en ACU1.

Instrucción “SQRT”: Raíz cuadrada de ACU1 (debe ser ≥ 0), y el resultado se


deposita en ACU1.

Instrucción “SQR”: Cuadrado de ACU1, y el resultado se deposita en ACU1.

Instrucción “LN”: Logaritmo natural de ACU1 (logaritmo con base e), y el


resultadose deposita en ACU1.

Instrucción “EXP”: Calcula el exponente (valor exponencial con base e) de ACU1, y


el resultado se deposita en ACU1.

41
Autómatas programables avanzado

Instrucciones “SIN”,
“COS” y “TAN”: Calculan el seno, coseno o tangente de un ángulo indicado en
radianes, y el resultado se deposita en ACU1.

Instrucción “ASIN”: Calcula el arcoseno de ACU1 (entre –1 y 1). El resultado es


un ángulo indicado en radianes: -π/2 ≤ arcoseno (ACU1) ≤ π/2

Instrucción “ACOS”: Calcula el arcocoseno de ACU1 (entre –1 y 1). El resultado


es un ángulo indicado en radianes: 0 ≤ arcocoseno (ACU1)
≤π

Instrucción “ATAN”: Calcula el arcotangente de ACU1. El resultado es un


ángulo indicado en radianes: π/2 ≤ arcotangente(ACU1) ≤ π/2

42
2: Operaciones aritméticas, conversión, rotación y desplazamiento

2.3.  Operaciones de conversión


Instrucciones: “BTD”,”BTI”,”DTB”,”DTR”,”DTR”,”ITB”,”ITD”,”RND”,”RND+”,

“RND-” y “TRUNC”

■■ Son operaciones incondicionales, no dependen ni afectan el RLO.

■■ Se efectúan sobre el ACU1, donde también se almacena el resultado.

Instrucción “BTD”: Convierte el número BCD de 7 dígitos en doble entero.

Valores admisibles: -9999999 ÷ 9999999

Resultado de la conversión:

Bits 0 ÷ 27 → núm. convertido

Bits 28 ÷ 30 → no se usan

Bit 31 → bit de signo

Instrucción “BTI”: Convierte el número BCD de 3 dígitos de la palabra baja de ACU1


en un entero (16 bits) que se guarda en la palabra baja de ACU1.

Valores admisibles: -999 ÷ 999

Resultado de la conversión:

Bits 0 ÷ 11 → núm. convertido

Bits 12 ÷ 14 → No se usan

Bit 15 → Bit de signo

Instrucción “DTB”: convierte un entero doble (32 bits) de ACU1 en un BCD de 7 dígitos.

Resultado de la conversión:

Bits 0 ÷ 27 → Nº BCD

Bits 28 ÷ 31 → Bit de signo: + = 0000

– = 1111

Instrucción “DTR”: convierte un entero doble (32 bits) de ACU1 en real (32 bits). Si es
necesario se redondea el resultado. Un entero de 32 bits es más exacto que un real.

Instrucción “ITB”: convierte un entero (16 bits) de ACU1 en BCD de 3 dígitos y el


resultado lo guarda en la palabra baja del ACU1.

43
Autómatas programables avanzado

Resultado de la conversión:

Bits 0 ÷ 11 → Nº BCD
Bits 12 ÷ 15 → Bit de signo: + = 0000
– = 1111
Instrucción “ITD”: Convierte un entero (16 bits) de la palabra baja de ACU1 en doble
entero (32 bits).

Observación: no hay una instrucción que convierta de entero a real de modo que hay
que hacer dos conversiones consecutivas: ITD y DTR.

Instrucción “RND”: redondea un número real (32 bits) a entero (32 bits). Primero lo
convierte y luego lo redondea al entero más próximo. Si el primer decimal después de
la coma es de 0 a 4, redondea a la baja; si el decimal es de 5 a 9, redondea al alza.

148.7 → RND = 149


148.4 → RND = 148

Instrucción “RND+” y “RND–“: RND+ redondea el resultado al número entero mayor


o igual que el real convertido. RND+ redondea el resultado al número entero menor o
igual que el real convertido.

148.7 → RND+ = 149


RND– = 148
148.4 → RND+ = 149
RND– = 148
–5.7 → RND+ = –5
RND– = –6

Instrucción “TRUNC”: convierte un real (32 bits) a doble entero (32 bits) y lo redondea
al entero de menor valor absoluto.

8.34 → RND = 8
TRUNC = 8
8.7 → RND = 9
TRUNC = 8
–8.7 → RND = –9
TRUNC = –8

44
2: Operaciones aritméticas, conversión, rotación y desplazamiento

2.4.  Operaciones de desplazamiento


Instrucciones: “SRW”, “SLW”, “SRD”, “SLD”, “SSI”, “SSD”

Desplazan el contenido de ACU1 bit a bit. Son incondicionales, no dependen del RLO.

Podemos desplazar, tanto a la derecha como a la izquierda, palabras, doble palabras,


enteros y dobles enteros.

2.4.1.  Desplazar palabras


A la derecha:

“SRW <nº de bits>” Desplaza la palabra baja (bits 0 al 15) de ACU1 nº bits

(0-15) a la derecha. Los bits vacíos se rellenan con cero.

SWR 0 = NOP

“SRW” Desplaza a la derecha tantas posiciones según el nº de el byte más


bajo de ACU2. (0-255)

A la izquierda:

“SLW <nº de bits>” Desplaza la palabra baja (bits 0 al 15) de ACU1 nº bits (0-
15) a la izquierda. Los bits vacíos se rellenan con cero.

“SLW” Desplaza a la izquierda según el nº de el byte más bajo de ACU2.

2.4.2.  Desplazar doble palabras


A la derecha:

“SRD <nº de bits>” Desplaza el contenido de ACU1 nº bits (0-32) a la derecha


y los bits vacíos se rellenan con cero.

“SRD” Desplaza a la derecha según el nº de el byte más bajo de ACU2.

A la izquierda:

“SLD <nº de bits>” Desplaza el contenido de ACU1 nº bits (0-32) a la izquierda


y los bits vacíos se rellenan con cero.

“SLD” Desplaza a la derecha según el nº de el byte más bajo de ACU2.

45
Autómatas programables avanzado

2.4.3.  Desplazar enteros


A la derecha:

“SSI <nº de bits>” Desplaza la palabra baja (bits 0 al 15) de ACU1 nº bits (0-
15) a la derecha. Los bits vacíos se rellenan con el bit de signo (el bit 15) Nota:
SSI 0 = NOP

“SSI” Desplaza a la dcha. según el nº del byte más bajo de ACU2.

2.4.4.  Desplazar dobles enteros


A la derecha:

“SSD <nº de bits>” Desplaza el contenido de ACU1 nº bits (0-31) a la derecha.


Los bits vacíos se rellenan con el bit de signo (el bit 32)

SSI 0 = NOP

“SSD” Desplaza a la derecha según el nº de el byte más bajo de ACU2.

46
2: Operaciones aritméticas, conversión, rotación y desplazamiento

2.5.  Operaciones de rotación


Instrucciones: “RRD”, “RLD”

Rotan el contenido de ACU1 equis posiciones de bit.

A la derecha:

“RRD <nº de bits>” Rota el ACU1 nº bits (0-32) a la derecha. Los bits que van
quedando vacíos se llenan con los que salen del ACU1.

RRD 0 = NOP 0

“RRD” Desplaza a la derecha según el nº de el byte más bajo de ACU2

A la izquierda:

“RLD <nº de bits>” Rota el ACU1 nº bits (0-32) a la izquierda. Los bits que van
quedando vacíos se llenan con los que salen del ACU1.

RL 0 = NOP 0

“RLD” Desplaza a la dcha. según el nº de el byte más bajo de ACU2

ACU1

1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0

Después de RLD 4:

ACU1

47
2: Operaciones aritméticas, conversión, rotación y desplazamiento

RESUMEN

Las instrucciones lógicas elementales basadas en el álgebra de Boole, comunes a
todos los autómatas, se complementan con otras secuencias preprogramadas por el
fabricante y de uso general en automatización, como son los registros, temporizadores,
contadores, etc.


Existen instrucciones que manipulan los bytes con operaciones de comparación,
conversión, transferencia, rotación o desplazamiento.


Existen instrucciones más potentes que realizan operaciones de cálculo aritméticas y
comunicaciones más o menos transparentes, permitiendo al autómata ser utilizado en
aplicaciones en las que se necesite manipulación de variables numéricas.


Todas estas instrucciones de control, cálculo y secuencia de programa forman el
cuerpo de los lenguajes de autómata, tan completos y potentes que en ocasiones
permiten confundir a esta máquina con un pequeño ordenador industrial.

49
3 3
Autómatas programables avanzado
DIDÁCTICA
UNIDAD

3.  Bloques de programa


3: Bloques de programa

ÍNDICE
OBJETIVOS.................................................................................................................................................................. 55
INTRODUCCIÓN......................................................................................................................................................... 56
3.1.  Bloques de programa............................................................................................................................................ 57
3.2.  Tipo de bloques..................................................................................................................................................... 58
3.3.  Módulos de función............................................................................................................................................... 59
3.4.  Tabla de declaración de variables........................................................................................................................ 60
3.5.  Llamadas a bloques.............................................................................................................................................. 61
3.6.  Ejemplo de función “FC”....................................................................................................................................... 63
3.7.  Bloques de datos “DB”......................................................................................................................................... 65
3.8.  Bloques de datos global........................................................................................................................................ 66
3.9.  Ejemplo de bloque de datos global...................................................................................................................... 69
3.10.  Formato de datos en los DB............................................................................................................................... 71
3.11.  Bloques de función “FB”.................................................................................................................................... 73
3.12.  Llamada al “FB”.................................................................................................................................................. 74
3.13.  Multidistancia: un “DB” de instancia para cada instancia............................................................................... 76
3.14.  Multinstancia: un “DB” de instancia para varias instancias de un “FB”......................................................... 78
RESUMEN..................................................................................................................................................................... 79

53
3: Bloques de programa

OBJETIVOS
■ Simplificar los programas de gran tamaño.

■ Modificar un programa de una forma más clara, ordenada y fácil.


Utilizar programa de bloques ya definidos por el fabricante que sólo son necesarios
parametrizar.

■ Conocer los distintos bloques de programa ya definidos para saber parametrizarlos.

■ Saber simplificar la puesta en servicio de un sistema.

55
Autómatas programables avanzado

INTRODUCCIÓN

El ciclo de operación de una tarea, recorre la secuencia La clasificación de las estructuras de programación
siguiente: en mono y multitarea son muy dependientes de la
■■ Adquisición de entradas. configuración hardware de la unidad de control.

■■ Escrutinio del programa (de la tarea). La programación es estructurada cuando la tarea de


control está dividida en subprogramas o módulos que
■■ Actualización de salidas. se corresponden con distintas funciones dentro del
■■ Servicio a periféricos o terminales de explotación. mando general, y cuya ejecución puede ser ordenada
varias veces dentro de un mismo ciclo de operación
La tarea constituye una entidad de programación
del autómata.
completa, con sus propias entradas, salidas, variables
internas y sentencias de control. En este capítulo se verán las diferentes estructuras
y metodologías de programación, y se comenta la
Esta circunstancia, que permite optimizar la ejecución
particular programación de módulos pregrabados por
utilizando estructuras multitarea si se dispone de
el fabricante para ejecutar tareas concretas o gobernar
un hardware multiprocesador con procesadores
interfaces específicas, módulos que sólo necesitan
adaptados a los distintos tipos de tratamientos
del usuario la parametrización que los adapte a su
(booleano, regulación, tratamiento, etc.), obliga, sin
aplicación correcta.
embargo, a utilizar un gestor de recursos en estas
aplicaciones para eliminar la conflictividad en el acceso
a los recursos.

56
3: Bloques de programa

3.1.  Bloques de programa


El software de programación STEP 7 permite estructurar el programa de usuario, es
decir, subdividirlo en distintas partes. Esto aporta las siguientes ventajas:

■■ Los programas de gran tamaño se pueden programar de forma clara.

■■ Se pueden estandarizar determinadas partes del programa.

■■ Se simplifica la organización del programa.

■■ Las modificaciones del programa pueden ejecutarse más fácilmente.

■■ Se simplifica el test del programa, ya que puede ejecutarse por partes.

■■ Se simplifica la puesta en servicio.

57
Autómatas programables avanzado

3.2.  Tipo de bloques


En un programa de usuario S7 se pueden utilizar diversos tipos de bloques:

Bloque Descripción breve de la función


Bloques de organización (OB) Los OBs definen la estructura del programa de usuario.
Bloques de función del sistema Los SFBs y SFCs están integrados en la CPU S7, permitiéndole acceder a
(SFBs) y funciones de sistema importantes funciones del sistema.
(SFCs)
Bloques de función (FB) Los FBs son bloques con “memoria” que puede programar el mismo usuario.
Funciones (FC) Las FCs contienen rutinas de programa para funciones frecuentes.
Bloques de datos de Instancia Al llamarse a un FB/SFB, los DBs de instancia se asocian al bloque.
(DBs de instancia)
Los DBs de instancia se generan automáticamente al efectuarse la compi-
lación.
Bloques de datos (DB) Los DBs son áreas de datos para almacenar los datos de usuario.

Adicionalmente a los datos asociados a un determinado bloque de función,


se pueden definir también datos globales a los que pueden acceder todos
los bloques.

Los OBs, FBs, SFBs, FCs y SFCs contienen partes del programa, por lo que se
denominan también bloques lógicos. El número permitido de bloques de cada tipo y
su longitud admisible dependen de la CPU.

58
3: Bloques de programa

3.3.  Módulos de función

Los módulos de función, también llamados FC, son módulos en los que
podemos incluir parte del programa de usuario, así obtenemos un programa
mucho más estructurado.

A estos módulos se puede acceder desde el OB1 o cualquier otro FC o FB.

En el FC podemos almacenar variables temporales “temp”, pero se pierden tras el


tratamiento del FC de modo que para memorizar los datos se suelen utilizar bloques
de datos globales.

Las funciones se pueden utilizar para:

■■ Devolver un valor de función al bloque invocante (ejemplo: funciones matemáticas).

■■ Ejecutar una función tecnológica (ejemplo: control individual con combinación


binaria).

Creación de un FC: hacer clic con el botón izquierdo del ratón en la carpeta de Bloques
e “Insertar nuevo objeto...” -> “Función”. Se le puede dar un nombre simbólico. Para
abrirlo hacer doble clic sobre él.

Tiene una tabla de declaración de variables estándar.

59
Autómatas programables avanzado

3.4.  Tabla de declaración de variables


Dirección Declaración Nombre Tipo Valor inicial Comentario
0.0 in valor1 WORD
2.0 out tiempo S5TIME
4.0 in_out memoria BOOL
0.0 temp. fecha DATE

En las tabla de declaración de variables se definen las variables locales, que pueden
ser temporales “temp” y estáticas “stat” (sólo FB’s) y los parámetros formales de
bloque, que pueden ser de entrada “in”, de salida “out” o de entrada_salida “in_out”.

Parámetros:

■■ In: son valores de entrada al bloque. Pueden ser constantes, direcciones


absolutas o simbólicas.

■■ Out: son valores que devuelve el bloque al programa que lo llamó después de la
ejecución del bloque. Pueden ser direcciones absolutas o simbólicas.

■■ In_out: recogen y mandan información. Pueden ser direcciones absolutas o


simbólicas.

Variables:

■■ Temp.: variables o datos locales que se usan dentro del bloque y no salen fuera.
Pierden su valor cuando salimos del bloque.

■■ Stat: variables que mantienen su valor al salir del módulo. Los FC no permiten
este tipo de variables y sólo para bloques FB.

60
3: Bloques de programa

3.5.  Llamadas a bloques


Instrucciones: “CALL”, “UC” y “CC”

“CALL” llama a funciones FC y FB independientemente del RLO. Una vez procesado


el bloque, el programa invocante seguirá procesándose.

Se puede llamar al bloque de forma absoluta o simbólica.

CALL FC1 //Llama a la función FC1 de forma incondicional.

Se pueden transferir parámetros a una función de la siguiente forma:

1. Crear en el FC una “Tabla de declaración de variables”, con sus parámetros in,


out e in_out según corresponda.

2. Cuando en el bloque invocante se introduzca la función CALL a ese FC,


automáticamente se crea una “tabla de parámetros formales” que son tomados
de la tabla de declaración de variables del FC.

CALL FC1

Num de motor:= (Parámetros formales)

Velocidad:= (Parámetros formales)

Potencia:= (Parámetros formales)

3. Hay que asignar a esos parámetros formales los parámetros actuales del bloque
invocante.

CALL FC1

Num de motor:= MW100 (Parámetros actuales)

Velocidad:= MW110 (Parámetros actuales)

Potencia:= A0.1 (Parámetros actuales)

En el caso de los bloques FC no se puede dejar ningún parámetro actual sin definir.

La instrucción “UC” llama incondicionalmente al bloque. Es igual que la función CALL,


pero no podemos transferir parámetros.

61
Autómatas programables avanzado

UC FC1 //Llama a la función FC1 de forma incondicional

La instrucción “CC” llama de forma condicional al bloque, en función del RLO. No


podemos transferir parámetros.

U E0.0
CC FC1 //Llama a la función FC1 si E0.0=1

62
3: Bloques de programa

3.6.  Ejemplo de función “FC”


Vamos a crear una función matemática que nos realice la suma de dos números
enteros y nos devuelva el resultado.

1. Creamos la función FC1, al que podemos darle el nombre simbólico de “Suma”, y


rellenamos su tabla de declaración de variables con dos parámetros de entrada,
que serán los dos operandos a sumar y un parámetro de salida que será el
resultado de la suma:

Dirección Declaración Nombre Tipo Valor inicial Comentario


0.0 in valor1 INT
2.0 in valor2 INT
4.0 out resultado INT
in_out
temp

En el área de instrucciones del FC escribimos el programa en AWL:

L #valor1

L #valor2

+I

T #resultado

El símbolo # significa variable temporal y se pone automáticamente.

Es importante guardar el bloque FC1.

2. Desde el OB1 llamaremos a la función. Al introducir la instrucción CALL,


automáticamente nos crea la tabla de parámetros formales que rellenaremos
con los valores que queramos.

L 2

L MW20

CALL “Suma”

valor1:= MW20

valor2:= 3

resultado:= MW100

Guardamos el OB1.

Para terminar hay que transferir al autómata los dos bloques, OB1 y FC1.

63
Autómatas programables avanzado

Marcando la carpeta “Bloques” y pinchando en el icono “Carga” transferimos a la CPU


todos los bloques del susodicho programa.

Comprobar con “Observar/Forzar” el valor de MW100.

64
3: Bloques de programa

3.7.  Bloques de datos “DB”


Los bloques de datos, también llamados DB’s, son áreas de datos donde se almacenan
datos de usuario. Un DB no contiene instrucciones S7.

Hay dos tipos de bloques de datos:

■■ Bloques de datos globales: a sus datos pueden acceder todos los bloques.

■■ Bloques de datos de instancia: asociados a un bloque de función FB.

65
Autómatas programables avanzado

3.8.  Bloques de datos global

Los DB Globales sirven para depositar datos con los que trabaja el programa de
usuario. Estos datos los puede utilizar cualquier tipo de bloque (OB, FC y FB) para leer
datos o escribir datos que se conservan aún después de salir del DB.

Un DB no tiene área de instrucciones S7, sino que es una tabla de datos que forma
una estructura:

Dirección Nombre Tipo Valor inicial Comentario


0.0 STRUCT

=0.0 END_STRUCT

Los datos almacenados estarán comprendidos entre STRUCT y END_STRUCT.

Creación de un DB: hacer clic con el botón izquierdo del ratón en la carpeta de
Bloques e “Insertar nuevo objeto...” -> “Bloque de datos”. Se le puede dar un nombre
simbólico. Para abrirlo hacer doble clic sobre él.

1. Seleccione el bloque de datos global, es decir, un bloque no asociado a ningún


UDT o FB.

2. Active la vista “Declaración” (en menú “Ver”) del bloque de datos en caso de que
ésta no se visualice todavía.

3. Defina la estructura rellenando la tabla visualizada conforme a los datos que se


indican a continuación:

Columna Explicación
Dirección Indica la dirección que STEP 7 asigna automáticamente a la variable al terminar
de introducir una declaración.
Designación Introduzca el nombre que debe asignar a cada variable.

66
3: Bloques de programa

Tipo Introduzca el tipo de datos de la variable (BOOL, INT, WORD, ARRAY, etc.).

Las variables pueden pertenecer a los tipos de datos simples, a los tipos de datos
compuestos, o bien, a los tipos de datos de usuario.
Valor inic. Indique el valor inicial, en caso de que el software no deba tomar el valor
predeterminado del tipo de datos introducido. Todos los valores introducidos
deben ser compatibles con los tipos de datos.

Cuando guarde por primera vez el bloque de datos, el valor inicial será adoptado
como valor actual de la variable, a menos que defina expresamente su valor
actual.
Comentario En este campo puede introducir un comentario para documentar la variable. El
comentario no debe tener más de 80 caracteres.

Acceso a los datos de un DB


Hay 2 métodos:

1. Para acceder a los datos de un DB primero hay que abrirlo.

Instrucción: “AUF”

AUF DB1 //Abre el DB1


AUF Datos //Abre el bloque de datos cuyo simbólico es “Datos”

Una vez abierto el DB el acceso a los datos se hace mediante carga (L) y
transferencia (T).

Se puede consultar un bit de la siguiente forma: “U DBXByte.Bit”

U DBX3.1 //Consulta el bit 3.1 del bloque de datos abierto.

Además se pueden cargar y transferir bytes, palabras y doble palabras.

67
Autómatas programables avanzado

L DBB1 //Carga en ACU1 el byte 1 del DB abierto.


L5 //Carga 5 en ACU1
T DBW4//y lo transfiero a la palabra 4 del DB abierto
L L#3 //Carga el doble entero 3
T DBD2 //y lo transfieres a la doble palabra 2 del DB abierto

No existe ninguna instrucción para cerrar un DB, sólo se cierra abriendo otro DB.

AUF DB5 //Abre DB5


L DBW8 //Carga en ACU1 la palabra 8 del DB5
AUF DB7 //Abre DB5
T DBW6 //Transfiere el contenido de ACU1 a la palabra 6 del DB7

2. La forma más sencilla de acceder a los datos de un DB es indicando en la misma


instrucción el número del DB. En este caso no es necesario abrir el DB con la
instrucción “AUF”.

U DB1.DBX3.0 //Consulta el bit 3.0 del DB1


L DB1.DBB7 //Carga en ACU1 el byte 7 del DB1
L DB2.DBW4 //Carga la palabra 4 del DB2
L DB1.DBD4 //Carga la doble palabra 4 del DB1
L Datos.Dato //Carga la variable “Dato” del DB llamado “Datos”

68
3: Bloques de programa

3.9.  Ejemplo de bloque de datos global


Vamos a crear una función matemática que nos realice la multiplicación de dos números
enteros y nos devuelva el resultado. Todos los datos van a estar almacenados en un
DB Global.

1. Creamos un DB y le damos el valor simbólico “Datos”. Lo seleccionamos como


no asociado a ningún bloque, es decir, global.

2. El siguiente paso es declarar los datos. Para ello vamos al menú “Ver” y marcamos
“Declaración”. Definimos la estructura rellenando la tabla:

Dirección Nombre Tipo Valor inicial Comentario


0.0 STRUCT
+0.0 valor1 INT 5
+2.0 valor2 INT 3
+4.0 resultado INT 0
=6.0 END_STRUCT

El valor inicial es valor predeterminado del tipo de variable que el programa usará
si no hemos definido nosotros ningún valor actual.

Para definir los valores actuales vamos a menú “Ver” y marcamos “Datos”.
Los valores actuales son en realidad los que están almacenados en el DB y
que podemos leer mediante la instrucción L de carga y escribir mediante la
instrucción T de transferencia.

Dirección Nombre Tipo Valor inicial Valor actual Comentario


0.0 valor1 INT 5 2
2.0 valor2 INT 3 0
4.0 resultado INT 0 0

69
Autómatas programables avanzado

A la variable valor 1 le damos valor actual 2. Si a la variable valor2 no le damos valor


actual alguno, al guardar el DB el valor inicial se transferirá al actual, o sea, 3.

Guardamos el DB.

1. En el OB1 escribimos el programa:

L Datos.valor2
L Datos.valor1
*I
T Datos.resultado

Transferimos los dos bloques, OB1 y DB1 al autómata.

Para ver el valor del resultado ir a “Observar/Forzar”

70
3: Bloques de programa

3.10.  Formato de datos en los DB


Datos simples:

■■ BOOL: 0 (FALSE) o 1 (TRUE)

■■ BYTE: Formato: B#16#3F

No permite introducirlo de la forma: 2#10010001

■■ WORD: W#16#AF

Permite introducirlo de la forma 2#1001..., pero lo traduce a

W#16#.

■■ DWORD: DW#16#FFFFAF2D

Permite introducirlo de la forma 2#1001..., pero lo traduce a

W#16#..

■■ INT: Números entre-32768 y 32767

■■ DINT: Números entre 32768 y 2147483647 y entre –32769 y –2147483648

■■ También se pueden introducir de la forma: L#5, L#-10

■■ REAL: Número Entre 1 (1.000000e+000)

■■ S5TIME: Máx: S5T#9990S

■■ TIME: Máx: T#24D20H31H23S647MS

■■ DATE: D2000-1-24 (Máx: D#2168-12-31)

■■ TIME_OF_DAY: Máx: TOD#23:59:59.999

■■ CHAR: Formato: ‘C’

Sólo un carácter que ocupa 1 byte

Datos compuestos:

■■ DATE_AND_TIME: DT#00-11-21-23:59:59.999

■■ STRING[Nº de caracteres]: cadena de caracteres entre comillas: ‘Siemens’

STRING[7].
El máximo de caracteres es 254

■■ ARRAY: Matrices

71
Autómatas programables avanzado

■■ STRUCT: es una estructura dentro del DB. Sirve para agrupar conjuntos de
datos de distinto tipo, simples o complejos. Empieza en STRUCT y acaba en
END_STRUCT se pueden anidar hasta 8 subestructuras.

Dirección Nombre Tipo Valor inicial Comentario


0.0 STRUCT
+0.0 Ficha STRUCT
+0.0 Nombre STRING [4] ‘pepe’
+6.0 Edad INT 0
+8.0 Teléfono STRUCT
+0.0 Fijo INT 0
+2.0 Móvil INT 0
=4.0 END_STRUCT
=12.0 END_STRUCT
=12.0 END_STRUCT
Figura 3.1.  Ejemplo de STRUCT.

Acceso a los datos:


L Datos.Ficha.Nombre
T Datos.Ficha.telefono.fijo
L DB5.DB8.DW0 //accede a Datos.Ficha.telefono.fijo

72
3: Bloques de programa

3.11.  Bloques de función “FB”


Los bloques de función FB son bloques programables y un FB es un bloque “con
memoria”.

Dispone de un bloque de datos DB asignado como memoria (bloque de datos de


instancia). Los parámetros que se transfieren al FB, así como las variables estáticas
“stat”, se memorizan en el DB de instancia. Las variables temporales se memorizan
en la pila de datos locales.

Los datos memorizados en el DB de instancia no se pierden al concluir el tratamiento


del FB.

Los datos memorizados en la pila de datos locales se pierden al concluir el tratamiento


del FB.

Creación de un FB:

1. Hacer clic con el botón izquierdo del ratón en la carpeta de Bloques e “Insertar
nuevo objeto...” -> “Bloque de función”. Se le puede dar un nombre simbólico.

2. Rellenar su tabla de declaración de variables.

3. Crear un bloque de datos DB y asignarlo como bloque de datos de instancia a


ese FB:

Al asociar el DB a ese FB, el DB será una tabla de variables copia exacta de la tabla
de declaración de variables del FB.

73
Autómatas programables avanzado

3.12.  Llamada al “FB”


Instrucción: “CALL FBn, DBn”

“CALL FBn, DBn” llama al FB independientemente del RLO.

Hay que asignarle un bloque de datos de instancia.

Una vez procesado el FB invocado, el programa del bloque invocante seguirá siendo
procesado.

CALL FB1,DB1 //Llama al bloque de función FB1 de forma Incondicional.

Se pueden intercambiar datos con el bloque FB:

1. Crear en el FB una “Tabla de declaración de variables”, con sus parámetros in,


out e in_out según corresponda.

2. Cuando en el bloque invocante se introduzca la función CALL FBn, DBn,


automáticamente se crea una “tabla de parámetros formales” que son cógidos
de la tabla de declaración de variables del FB.

CALL FB1,DB1

Num de motor:= (Parámetros formales)

Velocidad:= (Parámetros formales)

Potencia:= (Parámetros formales)

3. Hay que asignar a esos parámetros formales los parámetros actuales del bloque
invocante.

CALL FB1,DB1

Num de motor:= MW100 (Parámetros actuales)

Velocidad:= MW110 (Parámetros actuales)

Potencia:= A0.1 (Parámetros actuales)

74
3: Bloques de programa

■■ Si se llama varias veces al FB, sólo hay que introducir los parámetros
actuales que han cambiado respecto a la última llamada, ya que éstos se
han guardado en el DB de instancia una vez procesado el FB.
■■ Si el parámetro actual es un DB, se debe indicar siempre la dirección
absoluta completa.
■■ Asignación de parámetros actuales a los parámetros formales de un FB:
■■ Si al FB se le indican los parámetros actuales en la instrucción de lla-
mada, las operaciones del FB utilizan éstos.
Si en la instrucción de llamada no se indica ningún parámetro actual, el FB
utiliza los valores memorizados en el DB de instancia. A su vez pueden ser
los valores iniciales declarados en el FB (excepto los temporales).

75
Autómatas programables avanzado

3.13.  Multidistancia: un “DB” de instancia para cada


instancia
Un mismo DB puede estar asociado a varios DB’s, a estos DB’s se les llama instancias,
y cada una de esas instancias contiene distintos datos; dependiendo de cómo se
llame al FB éste utilizará un DB u otro.

Por ejemplo, si se asignan varios bloques de datos de instancia a un bloque de función


FB que controle un motor, se puede utilizar el mismo FB para controlar varios motores.

Dependiendo de cómo se llame al FB1:

CALL FB1, DB1 → Utiliza los datos del motor 1.

CALL FB1, DB2 → Utiliza los datos del motor 2.

CALL FB1, DB3 → Utiliza los datos del motor 3.

Dependiendo de si es motor 1 (E0.0) o motor 2 (E0.1) activamos ese motor


(con E0.2) un tiempo de 2 seg. o 5 seg. respectivamente.
Primero creamos un FB1 y en su tabla de declaración de variables declaro
la variable “tiempo” como parámetro tipo in o stat:

Dirección Declaración Nombre Tipo Valor inicial Comentario


in
out
in_out
0.0 stat tiempo S5TIME S5T#OMS
temp.

76
3: Bloques de programa

En el área de código del FB1:


U E0.2
L #tiempo
SV T0
U T0
= A4.0
Ahora es el momento de crear el DB asociado al FB: después de definir las
variables en la tabla de declaración de variables del FB creamos pues un
DB1 asociado al FB1. Al abrir el DB1 vemos que contiene la variable “tiem-
po”, en la cual introducimos el valor actual de tiempo para el motor 1 (menú
“Ver” → Datos):

Dirección Declaración Nombre Tipo Valor inicial Valor actual Comentario


0.0 stat tiempo S5TIME S5T#OMS S5T#2S

Por el momento no creamos el DB2.


En el OB1 escribimos el siguiente código:
U E0.0
SPB mot1
U E0.1
SPB mot2
BEA

77
Autómatas programables avanzado

3.14.  Multinstancia: un “DB” de instancia para varias


instancias de un “FB”
En el caso anterior si tuviéramos 100 motores, habría que hacer 100 instancias = 100
DB’s de instancia. Esto consume mucha memoria en el autómata.

A un FB se pueden transferir conjuntamente en un DB de instancia los datos de


instancia para diferentes motores. A tal efecto, la llamada de los controles de motores
se ha de efectuar en otro FB y en el área de declaración del FB invocante se deben
declarar las variables estáticas con el tipo de datos de un FB para las diferentes
instancias.

Utilizando un DB de instancia para varias instancias de un FB se ahorra capacidad de


memoria y optimiza el uso de los bloques de datos.

78
3: Bloques de programa

RESUMEN

La programación de autómatas utiliza metodologías de descripción lineal de la tarea
de aplicación para aquellos programas más sencillos, que necesitan pocas tomas de
decisión durante la ejecución, o estructuras más completas cuando la tarea de control
puede dividirse en partes, coincidentes con distintos subprocesos o subtareas de la
aplicación, de ejecución normalmente condicional a alguna variable del proceso.


La programación estructurada presenta ventajas tanto en la concepción como en la
explotación del proyecto, dado que el trabajo sobre módulos independientes entre sí,
facilitan la programación, documentación y puesta a punto de la aplicación.

■ Las tareas se pueden tratar de forma monotarea o multitarea.


En un formato monotarea un autómata tiene un único ciclo de operación, es decir,
las instrucciones se ejecutan de forma secuencial, una tras otra. En cada instante
de tiempo sólo se está resolviendo una sentencia, o lo que es lo mismo, sólo se está
generando una señal de control interna o de salida.


En un formato multitarea un autómata tiene varios ciclos de operaciones multiplexados
entre sí en el tiempo. En este formato se generan tantas señales de mando como tareas
se hayan definido en el programa de control, cada una obtenida sobre un procesador
distinto.

79
4
Autómatas programables avanzado
4
DIDÁCTICA
UNIDAD

4.  Tratamiento de señales analógicas


4: Tratamiento de señales analógicas

ÍNDICE
OBJETIVOS.................................................................................................................................................................. 85
INTRODUCCIÓN......................................................................................................................................................... 86
4.1.  Tratamiento de señales analógicas...................................................................................................................... 87
4.2.  Entrada analógica.................................................................................................................................................. 88
4.3.  Salida analógica.................................................................................................................................................... 90
4.4.  Direccionamiento de las señales analógicas...................................................................................................... 91
4.5.  Función de desescalado de salidas analógicas (FC106).................................................................................... 94
RESUMEN..................................................................................................................................................................... 97

83
4: Tratamiento de señales analógicas

OBJETIVOS
■ Identificar las distintas señales presentes en la naturaleza.

■ Saber adaptar dicha señal al entorno del autómata programable.

■ Con la información de dicha señal, definir como debe ser la entrada o salida al autómata.


Conocer los distintos módulos de programación que ofrece el fabricante, para saber
parametrizarlos.


Conocer las distintas instrucciones que tratan las señales tanto del exterior como del
interior del autómata.

85
Autómatas programables avanzado

INTRODUCCIÓN

El control de un proceso requiere siempre de un diálogo La característica esencial del autómata programable
operador-máquina y una comunicación entre máquina es su capacidad de comunicación con un entorno
y el sistema de control. Para el sistema de control, exterior en el que se manejan señales de potencia,
y más concretamente si éste es un autómata, esto con tensiones y corrientes de nivel industrial, aunque
se traduce en que éste reciba una serie de señales suelen disponer también de buses de comunicación
externas, unas de mando y otras de realimentación digital parecidos a los que normalmente incorporan
que, en conjunto, constituyen las entradas. Por otro los sistemas informáticos.
lado, el operador necesita conocer algunos datos sobre Un autómata consta de circuitos de interfaz de E/S
la marcha del proceso y los accionamientos necesitan muy potentes, que permiten conectar directamente
recibir las órdenes oportunas para controlarlo. con los sensores y accionamientos del proceso.
Las señales de entrada van desde el simple pulsador
o final de carrera, hasta la medición de cualquier
magnitud física que intervenga en el proceso. Por otro
lado, las salidas pueden consistir también en señales
todo o nada, generalmente actuando sobre relés,
electroválvulas u otros elementos electromecánicos,
o señales analógicas o digitales para señalización en
instrumentos de medida, visualizadores, impresión
de mensajes de alarma o mostrar el estado de los
sensores y accionamientos, etc.

86
4: Tratamiento de señales analógicas

4.1.  Tratamiento de señales analógicas


Entradas analógicas: se leen directamente de la periferia (PEW), no de la PAE.

Salidas analógicas: se escriben directamente en la periferia, no en la PAA.

87
Autómatas programables avanzado

4.2.  Entrada analógica


Entrada analógica
Una entrada analógica es una señal de entrada que tiene una señal continua
(ininterrumpida).

Las entradas analógicas típicas varían de 0 a 20 mA 4 a 20 mA, o de 0 a 10 V.

En el ejemplo siguiente, un medidor de nivel de 4 a 20mA monitoriza el nivel de líquido


en un tanque cuyo rango de medida es 0 a 1000 litros. Dependiendo del medidor de
nivel, la señal del autómata puede incrementarse o reducirse en la misma medida que
el nivel se incremente o disminuya.

El autómata incorpora un convertidor analógico digital (A/D), en cada ciclo muestrea


un valor y después lo traduce a bit. Cuantos más bits, más definición y precisión.

88
4: Tratamiento de señales analógicas

Estos valores van a ser un número entero, con la siguiente resolución máxima:

■■ 216 = 65536 unipolar.

■■ -32767 a +32767 bipolar.

Para un módulo de entradas de 12 bits la resolución será: 212 = 4096. Pero nosotros
veremos X cantidad de resolución, dependiendo de la tarjeta analógica.

Tarjeta 8 bits= 28 =256 de resolución x 128 =32768 cantidad de resolución.

Tarjeta 12 bits= 212 =4096 de resolución x 8 =32768 cantidad de resolución.

La resolución en la práctica es 27648.

Así, y en el ejemplo, con 0 litros obtendré el entero 0, con 500 litros obtendré 13824,
y con 1000 litros obtendré 27648.

Después escala esos valores y los convierte en un número real.

 A / D → registro → escalado → programa


Medidor de nivel → 
 0 ÷ 27648
Autómata

89
Autómatas programables avanzado

4.3.  Salida analógica


Salida analógica
Una salida analógica es una señal de salida que tiene una señal continua.
La salida puede ser algo tan simple como una tensión de 0-10 VCC que
acciona un aparato de medida analógico.

El tratamiento se hace mediante un convertidor digital-analógico (D/A)

Pr ograma → desescalado → registro → D / A 


 → transductor
0 ÷ 27648 
Autómata

90
4: Tratamiento de señales analógicas

4.4.  Direccionamiento de las señales analógicas


La CPU accede directamente a las entradas y salidas de módulos de entradas/salidas
analógicas.

Direccionamiento de periferia (acceso directo): las entradas y salidas disponen de su


propia área de direcciones.

La dirección de un canal de entrada o salida analógico es siempre una dirección de


palabra. La dirección de canal depende siempre de la dirección inicial del módulo.

■■ Entradas externas:

□□ Byte de entrada de la periferia PEB 0 a 65535

□□ Palabra de entrada de la periferia PEW 0 a 65534

□□ Palabra doble de entrada de la periferia PED 0 a 65532

■■ Salidas externas:

□□ Byte de salida de la periferia PAB 0 a 65535

□□ Palabra de salida de la periferia PAW 0 a 65534

□□ Palabra doble de salida de la periferia PAD 0 a 65532

Si por ejemplo el primer módulo analógico está enchufado en el slot 4, tiene la


dirección inicial prefijada 256. La dirección inicial de cada módulo analógico añadido
se incrementa en 16 por cada slot.

Un módulo de entrada/salida analógica tiene las mismas direcciones iniciales para los
canales de entrada y salida analógicos.

Ejemplo para módulos analógicos

91
Autómatas programables avanzado

Función: FC105 “SCALE”


Está función se inserta:

Menú Insertar → Elementos de programa → Librerías → Standard Library → TI-S7

Converting Blocks → FC105

CALL “SCALE”

IN:=

HI_LIM:=

LO_LIM:=

BIPOLAR:=

RET_VAL:=

OUT:=

La función toma un valor entero a la entrada IN y lo convierte a un valor real,


convirtiéndolo a escala entre un rango comprendido entre un límite inferior y un límite
superior (LO_LIM y HI_LIM). El resultado se escribe en la salida (OUT).

Fórmula:

(IN − K1)x (HI _ LIM − LO _ LIM)


OUT = + LO _ LIM
K1 − K 2
Donde K1, K2:

■■ Bipolar: se supone que el valor entero de entrada deberá estar entre K1= –27648
y K2= 27648.

■■ Unipolar: K1=0 y K2=27648.

Por ejemplo, ¿cuántos litros se corresponden con el valor interno de tarjeta de 10000?

92
4: Tratamiento de señales analógicas

(10000 − 0 )x (1000 − 0 )
Litros = + 0 = 361' 68l
27648 − 0

Parámetros de la función SCALE (FC105)


Parámetros de entrada:

■■ IN (INT): valor de entrada a escalar en valor real.

■■ HI_LIM (REAL): límite superior del rango de escala.

■■ LO_LIM (REAL): límite inferior del rango de escala.

■■ BIPOLAR (BOOL): 1 para entrada bipolar, 0 para entrada unipolar.

Parámetros de salida:

■■ OUT (REAL): resultado de la conversión a escala.

■■ RET_VAL (WORD): W#16#0000 es que no se han producido errores. Para otros


códigos véase la ayuda.

Los números reales (32 bits) se introducen con el formato correspondiente.


Ej.: 10.0
La OUT al ser un número real se deberá guardar como doble palabra.’Ej.:
MD100

93
Autómatas programables avanzado

4.5.  Función de desescalado de salidas analógicas


(FC106)
Función: FC106 “UNSCALE”

CALL “UNSCALE”

IN :=

HI_LIM :=

LO_LIM :=

BIPOLAR :=

RET_VAL :=

La función toma en la entrada IN un valor real que está ajustado a escala entre un
rango comprendido entre un límite inferior y un límite superior (LO_LIM y HI_LIM), y lo
convierte a un valor entero. El resultado se escribe en la salida (OUT).

Fórmula:

IN − LO _ LIM)x (K 2 − K1)
OUT = + K1
(HI _ LIM − LO _ LIM)

Donde K1, K2:

■■ Bipolar: K1= –27648 y K2= 27648.

■■ Unipolar: K1=0 y K2=27648.

Parámetros de la función UNSCALE (FC106)


Parámetros de entrada:

■■ IN (REAL): valor de entrada a desescalar, convirtiéndolo en un valor entero.

■■ HI_LIM (REAL): límite superior del rango de escala.

■■ LO_LIM (REAL): límite inferior del rango de escala.

■■ BIPOLAR (BOOL): 1 para entrada bipolar, 0 para entrada unipolar.

Parámetros de salida:

■■ OUT (INT): resultado del desencalado.

■■ RET_VAL (WORD): código de retorno. Si devuelve el código W#16#0000 es que


no se han producido errores. Para otros códigos véase la ayuda.

94
4: Tratamiento de señales analógicas

Configurar los parámetros


Para configurar los parámetros de las tarjetas analógicas, ir al HW Config y hacer
doble clic sobre la tarjeta.

Parámetros
Habilitar:

■■ “Alarma de diagnóstico”: si está activada y se presenta un evento de diagnóstico,


el módulo desencadena una alarma de diagnóstico (OB80), que se produce por:

□□ Error de configuración / parametrización.

□□ Error de modo común.

□□ Rotura de hilo (requisito: la comprobación de la rotura de hilo está activada).

□□ Rebase por defecto del margen de medida.

□□ Margen de medida rebasado.

□□ Falta tensión de carga L+.

95
Autómatas programables avanzado

■■ “Alarma de proceso al rebasar límites”: cuando el valor de entrada sale del


margen limitado por “Límite superior” y “Límite inferior”, entonces el módulo
dispara una alarma de proceso (=alarma de límite).

■■ “Alarma de proceso al final del ciclo”: un ciclo abarca la conversión de los valores
medidos en todos los canales de entrada activos en el módulo con entradas
analógicas. El módulo procesa los canales uno tras otro. Tras la conversión de
valores medidos, el módulo notifica que todos los canales presentan valores
de medición nuevos a la CPU mediante una alarma de proceso (=alarma fin
de ciclo). Se puede utilizar la alarma de proceso para cargar continuamente
los valores analógicos actuales convertidos. Para reducir el tiempo de ciclo
desactive los canales que no utilice.

■■ “Diagnóstico colectivo”: si está activado y se produce un evento de diagnóstico,


entonces se introduce una información al respecto en el área de datos de
diagnóstico del módulo.

■■ Regla: si hay un grupo de canales que no está conectado, seleccione


“desactivado”. Entonces se actualizarán a intervalos más breves los demás
valores de entrada.

■■ “Tipo”: haga clic en este campo para hacerse mostrar los tipos de medición
disponibles (tensión, intensidad...) y elegir uno de ellos.

■■ “Margen”: haga clic en este campo para hacerse mostrar los márgenes de
medida disponibles para el respectivo tipo de medición y elija uno de ellos.

96
4: Tratamiento de señales analógicas

RESUMEN

El autómata se diferencia de otros sistemas programables precisamente por la potencia
de su sistema de entradas/salidas, que le permite un enlace fácil con la mayor parte de
los sensores y actuadores industriales.


La conexión tan directa entre el autómata y los elementos de potencia del proceso
a través del sistema de entradas/salidas, hace que éstas deban ser diseñadas
cuidadosamente, para poder soportar las duras condiciones ambientales y de entorno
a que se ven sometidas.


Existe una gran diversidad de módulos o tarjetas de interfaz disponibles, comparando
sus características y campo de aplicación. Se ha explicado los principios de
funcionamiento de los tipos de interfaces principales, tanto lógicos como analógicos.


Se debe también separar las distintas fuentes de señal para que no exista modificación
de la señal a medir y no influya el ruido.

97
5
Autómatas programables avanzado
5
DIDÁCTICA
UNIDAD

5.  Eventos de alarma y error asíncrono


5: Eventos de alarma y error asíncrono

ÍNDICE
OBJETIVOS................................................................................................................................................................ 103
INTRODUCCIÓN....................................................................................................................................................... 104
5.1..Eventos de alarma y error asíncrono................................................................................................................... 105
5.2..Módulo de arranque OB100.................................................................................................................................. 107
5.3..Alarma cíclica OB35.............................................................................................................................................. 108
5.4..Alarma horaria OB10............................................................................................................................................. 109
5.5..Interrupción de retardo OB20............................................................................................................................... 110
5.6..Más OB’S............................................................................................................................................................... 111
RESUMEN................................................................................................................................................................... 113

101
5: Eventos de alarma y error asíncrono

OBJETIVOS
■ Conocer las distintas causas que pueden producir errores graves en un proceso.

■ Identificar dichos eventos y asociarlos a niveles de importancia según la seguridad.

■ Saber tratar esas alarmas para que un sistema productivo no pierda el sincronismo.

■ Definir el nivel de alarma para asociarla a su módulo de programación correspondiente.

■ Informar a los sistemas de supervisión de las alarmas producidas y porqué se ha activado.

103
Autómatas programables avanzado

INTRODUCCIÓN

Los autómatas programables son máquinas El autómata realiza también una serie de acciones
secuenciales que ejecutan correlativamente las comunes que garantizan la seguridad en el
instrucciones indicadas en el programa de usuario funcionamiento, como son los chequeos de memoria
almacenando en su memoria, generando unas y de CPU, comprobación del “watchdog” o reloj de
órdenes o señales de mando a partir de las señales de guarda, etc.
entrada leídas de la planta: al detectarse cambios en Además, y eventualmente, establece comunicación
las señales, el autómata reacciona según el programa con periféricos exteriores, por ejemplo para volcado
hasta obtener las órdenes de salida necesarias. Esta de datos en impresora, comunicación con otros
secuencia se ejecuta continuamente para conseguir el autómatas u ordenadores, conexión con la unidad de
control actualizado del proceso. programación, etc.
La secuencia de operación del autómata se puede Todas estas acciones se van repitiendo periódicamente,
dividir en tres fases principales: definiendo un ciclo de operación que necesita de un
■■ Lectura de señales desde la interfaz de entradas. cierto tiempo para ser ejecutado. Este tiempo será
■■ Escritura de señales en la interfaz de salidas. determinante cuando el autómata pretenda controlar
procesos rápidos, con señales de muy corta duración
■■ Procesado del programa para obtención de las señales o alta frecuencia de conmutación.
de control.
En este tema se describe el ciclo de operación del
Con el fin de optimizar los tiempos de acceso a las autómata y las comprobaciones o test que realiza
interfaces E/S, se realiza la lectura y escritura de durante su funcionamiento, con una valoración
señales simultáneamente para todas las entradas y cualitativa de los tiempos que emplea en realizar
salidas implicadas, de forma que las entradas leídas cada operación. Se define también el concepto de
se almacenan en una memoria temporal o memoria respuesta del autómata en tiempo real, y se indican
imagen de entradas, a la que acude la CPU durante la las soluciones que ofrecen los fabricantes para el
ejecución del programa, mientras que los resultados control de procesos rápidos.
o señales de mando se van almacenando en otra
memoria temporal o imagen de salidas, según se van
obteniendo. Finalizada la ejecución, estos resultados
se colocan en la interfaz de salida de una sola vez.

104
5: Eventos de alarma y error asíncrono

5.1. Eventos de alarma y error asíncrono


La serie Simatic S7 dispone de la capacidad de poder interrumpir el programa de
usuario para poder atender de forma inmediata o retardada a un determinado evento.
Las respuestas a las alarmas se deben programar, para definir los módulos OB a los
cuales se saltará cuando se produzcan.

Se puede definir la prioridad de las alarmas, dando un orden de preferencia en la


respuesta de las mismas, lo cual es imprescindible en aquellas situaciones en que se
presenten varias alarmas.

También se puede bloquear el tratamiento de las alarmas y eventos de error, aunque


no puede ser desactivado por la llamada de una FC estándar, si esta FC estándar
incluye también los citados eventos que se habilitan nuevamente.

Para la programación de los eventos de alarma y error asíncrono se emplean las SFC
39 a 42.

Las alarmas están subdivididas en diferentes clases. La siguiente tabla contiene todas
las clases de alarmas y sus OB correspondientes:

Clases de alarmas OB
Alarmas horarias OB 10 a OB 17
Alarmas de retardo OB 20 a OB 23
Alarmas cíclicas OB 30 OB 38
Alarmas de proceso OB 40 OB 47
Alarmas de comunicación OB 50 OB 51
Alarmas de error asíncrono OB 80 OB 87 (siguiente tabla)
Alarmas de error asíncrono OB 10 a OB 17 el tratamiento de las alarmas de error asíncrono se
enmascara o desenmascara con las SFC 36 a 38.

La siguiente tabla contiene los eventos de error asíncrono, ante los cuales se puede
reaccionar llamando al OB correspondiente en el programa de usuario.

105
Autómatas programables avanzado

Eventos de error asíncrono OB


Error de tiempo (ej. sobrepasar el tiempo de ciclo). OB 80
Fallo de la alimentación (ej. pila agotada). OB 81
Alarma de diagnóstico (ej. fusible defectuoso en un módulo de señales). OB 82
Fallo de inserción del módulo (ej. módulo sacado o mal insertado). OB 83
Error de hardware de la CPU (ej. cartucho de memoria secado). OB 84
Error de proceso del programa (ej. OB no fue cargado). OB 85
Ha fallado toda la fila. OB 86
Error de comunicación (ej. error de datos globales). OB 87

Dependiendo de la CPU se dispondrá de unos determinados módulos OB accesibles.

Por ejemplo, en la CPU 314 IFM disponemos de:


OB 1 ciclo libre
OB 35 control por tiempo
OB 10 control en tiempo real
OB 40 interrupción (alarma)
OB 100 recomienzo

106
5: Eventos de alarma y error asíncrono

5.2. Módulo de arranque OB100


Módulos de arranque dependiendo de CPU y tipo de arranque:

■■ OB100

■■ OB101

■■ OB102

Se ejecuta al producirse un arranque de la CPU. Un arranque se produce cuando:

■■ Después de que se conecta la alimentación ON.

■■ Si se cambia la llave de STOP a RUN.

En estos casos el OB100 sólo se ejecutará una vez, un ciclo, y después se ejecuta el
OB1 cíclicamente.

El OB100 nos puede ser útil para inicializar valores, por ejemplo inicializar un contador:

OB100

L C#5

S Z0

107
Autómatas programables avanzado

5.3. Alarma cíclica OB35


Alarmas cíclicas disponibles dependiendo de la CPU: OB30 ÷ OB38

Para los S7-300 sólo dispondremos del OB35.

Interrumpe al OB1 cada cierto intervalo para llamar al OB de alarma cíclica.

El OB de alarma cíclica se configura en las propiedades de la CPU:

HW Config → Doble click sobre la CPU → Pestaña “Alarma cíclica”.

Establecemos la periodicidad en ms con respecto al momento de arranque


(STOP→RUN).

No olvidarse de “Guardar y compilar” y “Cargar en módulo”.

Tan sólo nos queda crear el OB35 con el código que queremos que se ejecute en la
interrupción, y transferirlo a la CPU.

108
5: Eventos de alarma y error asíncrono

5.4. Alarma horaria OB10


Alarmas cíclicas disponibles dependiendo de la CPU: OB10 ÷ OB17.

Interrumpen el OB1 cíclico y ejecutan el código del OB de alarma horaria en una fecha
especificada o a intervalos especificados.

El OB de alarma horaria se configura en las propiedades de la CPU:

HW Config → Doble click sobre la CPU → Pestaña “Alarmas horarias”

Configuración
■■ Activa: Activa / desactiva la alarma

□□ Periodicidad:

Una vez: se ejecuta una vez, en el momento especificado.


Cada minuto: se ejecuta en intervalos de 1 minuto, desde el momento
especificado.
Cada hora: se ejecuta en intervalos de 1 hora, desde el momento especificado.
Cada día: se ejecuta 1 vez al día, desde el momento especificado.
Cada mes.
Cada semana.
Cada año.
□□ Fecha de arranque / hora: a partir de la cual empieza la periodicidad.

Fecha : 30.03.95
Hora : 22:15:00
No olvidarse de “Guardar y compilar” y “Cargar en módulo”

Tan sólo nos queda crear el OB de alarma horaria con el código que queremos que se
ejecute en la interrupción y transferirlo a la CPU.

Observaciones
■■ Si ponemos una fecha en pasado con respecto al reloj interno de la CPU y de
periodicidad una sola vez, el OB de alarma horaria se ejecutaría 1 sola vez tras
un rearranque completo (caliente) o un rearranque en frío.

■■ Para ajustar el reloj de la CPU.

■■ Administrador Simatic → Sistema de destino → Ajustar la hora...

109
Autómatas programables avanzado

5.5. Interrupción de retardo OB20


Alarmas cíclicas disponibles: OB20 ÷ OB23.

El OB de retardo se arranca con la función de sistema SFC32 “SRT_DINT”. El


funcionamiento es que tras transcurrir el tiempo de retardo parametrizado llama al OB
de alarma de retardo.

Por ejemplo, CALL “SRT_DINT”


OB_NR :=
DTIME :=
SIGN :=
RET_VAL :=

Descripción de los parámetros


Parámetros de entrada:

OB_NR (INT): número del OB que se arrancará al transcurrir el tiempo de


retardo (OB20÷OB23).

DTIME (TIME): valor del retardo (1 a 60000 ms) Ej.: T #200MS.

SIGN (WORD): signo que, al llamar el OB de alarma de retardo, aparece en la


información de eventos de arranque del OB.

Parámetros de salida:

RET_VAL (INT): código de error, si ocurre un error al procesar la función.

Códigos:

0000 No ha ocurrido ningún error.

8090 Parámetro OB_NR erróneo.

8091 Parámetro DTIME erróneo.

110
5: Eventos de alarma y error asíncrono

5.6. Más OB’S


Además de las alarmas cíclicas vistas anteriormente, podemos encontrar también las
siguientes:

■■ OB’s de alarma de proceso (OB 40 hasta OB 47).

■■ OB de alarma de multiprocesamiento (OB 60).

■■ OB para errores de redundancia en la periferia (OB 70).

■■ OB para errores de redundancia en las CPU (OB 72).

■■ OB para errores de redundancia en la comunicación (OB 73).

■■ OB de error de tiempo (OB 80).

■■ OB de fallo de alimentación (OB 81).

■■ OB de alarma de diagnóstico (OB 82).

■■ OB de presencia de módulo (extraer/insertar) (OB 83).

■■ OB de avería de CPU (OB 84).

■■ OB de error de ejecución del programa (OB 85).

■■ OB de fallo del bastidor (OB 86).

■■ OB de error de comunicación (OB 87).

■■ OB de tarea no prioritaria (OB 90).

■■ OB’s de arranque (OB 100, OB 101 y OB 102).

■■ OB de error de programación (OB 121).

■■ OB de error de acceso a la periferia (OB 122).

En cada caso consultar la ayuda online para una descripción detallada.

111
5: Eventos de alarma y error asíncrono

RESUMEN
■ Con el autómata en RUN, el programa de usuario se ejecuta siguiendo una secuencia
o ciclo de operación que pasa por las siguientes etapas:

■■ Chequeos del sistema.


■■ Lectura de señales desde la interfaz de entradas.
■■ Escritura de señales en la interfaz de salidas.
■■ El procesado del programa para la obtención de las señales de control.
■ En ocasiones, el autómata no puede responder en tiempo real y se generan eventos
de alarma.

■ Los retardos dependientes de entradas y salidas son debidos a los filtrados de señales
preferentemente.

■ Para solucionar los problemas de retardo y así eliminar alarmas, se utilizan:

■■ Entradas especiales de filtrado débil, asociadas a programas de ejecución rápida.


■■ Entradas detectoras de flancos, que incorporan un biestable capaz de memorizar la
señal hasta que es leída desde la CPU.
■■ Entradas de contador rápido, mono o bidireccionales.

113
6
Autómatas programables avanzado
6
DIDÁCTICA
UNIDAD

6.  Direccionamiento indirecto y matrices


6: Direccionamiento indirecto y matrices

ÍNDICE
OBJETIVOS................................................................................................................................................................ 119
INTRODUCCIÓN....................................................................................................................................................... 120
6.1.  Direccionamiento indirecto................................................................................................................................. 121
6.1.1.  Direccionamiento indirecto por memoria................................................................................................................. 121
6.1.2.  Direccionamiento indirecto por registro intraárea...................................................................................................... 123
6.1.3.  Direccionamiento indirecto por registro interárea...................................................................................................... 124
6.2.  Operaciones con el registro de direcciones...................................................................................................... 126
6.3.  Array - matrices................................................................................................................................................... 127
RESUMEN................................................................................................................................................................... 131

117
6: Direccionamiento indirecto y matrices

OBJETIVOS
■ Distinguir los distintos modos de direccionamiento existentes en un autómata.

■ Saber cómo quedan los datos en memoria en función del direccionamiento seleccionado.


Utilizar de forma correcta las operaciones de carga y transferencia en función del
direccionamiento.

■ Utilizar arrays y matrices para colocar, de forma optimizada, los distintos datos en memoria.

■ Saber introducir, de forma correcta, los datos en los arrays y las matrices.

119
Autómatas programables avanzado

INTRODUCCIÓN

Un autómata programable industrial es un equipo El autómata gobierna las señales de salida según el
electrónico de control con un cableado interno programa de control previamente almacenado en una
independiente del proceso a controlar, el cual se memoria, a partir del estado de las señales de entrada.
adapta a dicho proceso mediante un programa El autómata se configura alrededor de una unidad
específico, que contiene la secuencia de operaciones central o de control que, unida por medio de buses
a realizar. internos a las interfaces de entrada y salida y a las
Esta secuencia de operaciones se define sobre memorias, define lo que se conoce como arquitectura
señales de entrada y salida al proceso, cableadas interna del autómata.
directamente en los bornes de conexión del autómata. Según las soluciones constructivas adoptadas, esta
Las señales de entrada pueden proceder de arquitectura puede tomar distintas configuraciones.
elementos digitales, como finales de carrera y
detectores de proximidad, o analógicos, como
sensores de temperatura y dispositivos de salida
en tensión o corriente continuas. Las señales de
salida son órdenes digitales, todo o nada o señales
analógicas en tensión o corriente, que se envían a
los elementos indicadores y actuadores del proceso,
como lámparas, contactores, válvulas, etc.

120
6: Direccionamiento indirecto y matrices

6.1.  Direccionamiento indirecto


Hay tres tipos de direccionamiento indirecto:

■■ Direccionamiento indirecto por memoria.

■■ Direccionamiento indirecto por registro intraárea.

■■ Direccionamiento indirecto por registro interárea.

6.1.1.  Direccionamiento indirecto por memoria


La dirección del operando viene indicada por un puntero.

Formato de instrucción con direccionamiento indirecto por memoria:

En este ejemplo la instrucción es una carga en ACU1 del valor del temporizador cuyo
número está contenido en MW2.

Según el identificador del operando, la operación evalúa los datos depositados en la


dirección como puntero en formato palabra o doble palabra.

Puntero en formato palabra, indica el número en formato decimal de:

□□ Temporizadores (T).

□□ Contadores (Z).

□□ Bloques de datos (DB, DI).

□□ Bloques lógicos (FC, FB).

L 5 //Carga 5 en ACU1
T MW2 //Transfiere 5 a MW2
L T[MW2] //Carga el valor actual del temporizador T5 en ACU1

Puntero en formato doble palabra, indica la dirección de:

□□ Bit.

□□ Byte.

121
Autómatas programables avanzado

□□ Palabra.

□□ Doble palabra.

Un puntero tiene el siguiente formato como doble palabra:

P#Byte.Bit

L P#4.1 //Carga el puntero en ACU1


T MD2 //Transfiere el resultado a una doble palabra
U E[MD2] //Consulta el estado de la señal en la entrada E4.1
= A[MD2] //y asigna ese estado de señal a la salida A4.1

Para direccionar byte, palabra y doble palabra, el bit de puntero siempre debe
ser 0.

L P#4.0 //Carga el puntero en ACU1


T MD2 //Transfiere el resultado a una doble palabra
L EB[MD2] //Cargo el ACU1 el byte de entradas 4

El puntero deberá almacenarse en:


Marcas (M).
Bloques de datos (DB).
Datos locales (L).

□□ Direccionamiento indirecto de bloques de datos:

L 1 //Carga 1 en ACU1
T MW10 //Transfiere 1 a MW10
L P#4.0 //Carga el puntero en ACU1
T MD2 //Transfiere el puntero a MD2
AUF DB[MW10] //Abre el DB1
L DBD[MD2] //En ACU1 carga DBD4 (La doble palabra 4 del DB)
No se podría hacer así: L DB[MW10].DBD[MD2]
Además, en el ejemplo deberá existir previamente el DB1, si no, da fallo.

122
6: Direccionamiento indirecto y matrices

□□ Los punteros se pueden sumar.

L P#124.2 /Carga puntero


L P#0.7 //Carga puntero
+D //Los sumas: 124.2 + 0.7 = P#125.1

L P#124.2 //Carga puntero


L 3 //Suma 3 bits
+D //Resultado: P#124.5

□□ Se puede observar el puntero con “Observar/Forzar Variable”.

Operando Formato de estado


-------------------------------------------
MD4 Puntero

6.1.2.  Direccionamiento indirecto por registro intraárea


Existen dos registros de direcciones de 32 bits, AR1 y AR2, que almacenan los punteros
intraárea o interárea que utilizan las instrucciones, los cuales usan el direccionamiento
indirecto por registro.

El formato de una instrucción que utiliza el direccionamiento indirecto por registro


intraárea es el siguiente:

Operación identificadora del operando [Registro de direcciones AR1 o AR2,


Operando]

La ventaja es que se puede modificar dinámicamente el operando.

El operando lo indican dos punteros, por ejemplo:

= A[AR1,P#1.1]

(*) (**)

(*) Identificador de operando puede ser:

□□ Operaciones lógicas que direccionan bits: E, A, M, L, DBX

123
Autómatas programables avanzado

□□ Con la función carga (L) que direcciona bytes palabras y doble palabras: E, A,
M, L, D y PE.

□□ Con la función transferencia (L) que direcciona bytes palabras y doble palabras:
E, A, M, L, DB, DI y PA.

(**) Puntero de doble palabra es el offset (desplazamiento) que se suma al contenido


del registro de direcciones donde previamente debe estar cargado otro puntero en
formato doble palabra (instrucción “LAR1”). La suma de los dos punteros es byte+byte
y bit+bit.

L P#8.7 //Carga el valor del puntero en ACU1

L AR1 //Transfiere el puntero de ACU1 a AR1

U E[AR1,P#0.0] //Consulta el estado de señal de la entrada E8.7


(8.7 + U 0.0 = 8.7)

= A[AR1,P#1.1] //y lo asignas a la salida A10.0 (8.7 + 1.1 = 9.8,


que no existe, por tanto, será el siguiente al 9.7,
que es 10.0)

Para acceder a un byte, palabra o doble palabra el nº de bit del puntero debe ser cero,
ej.:

L P#4.0

L AR1

L EB[AR1,P#10.0] //Carga en ACU1 el byte de entradas EB14.0

6.1.3.  Direccionamiento indirecto por registro interárea


Es similar al direccionamiento indirecto por registro intraárea, pero ahora el área de
memoria del operando va incluida en el puntero, por ejemplo:

124
6: Direccionamiento indirecto y matrices

L P#E8.7
L AR1
L P#A8.7
L AR2
U [AR1,P#0.0] //Consulta la entrada E8.7
= [AR2,P#1.1] //Lo asignas a la salida A10.0 (8.7
+ 1.1 = 9.8 = 10.0)

Para acceder a un byte, palabra o doble palabra, el nº de bit de puntero debe ser 0:

L P#MB0

L AR1

L B[AR1,P#10.0] //Carga el byte MB10 en ACU1

L P#MD1
L AR2
T D[AR2,P#53.0] //Transfiere el contenido de ACU1 a la doble pala
bra MD54

125
Autómatas programables avanzado

6.2.  Operaciones con el registro de direcciones


Instrucciones: “+AR1”, “+AR2”, “+AR1 P#Byte.Bit” y “+AR2 P#Byte.Bit”

■■ “+AR1” y “+AR2” suma el contenido de ACU1 (un entero de 16 bits que será el
desplazamiento) al contenido de AR1. La suma se hace a nivel de bits.

Esto es: ACU1+AR1->AR1

L P#4.1
L AR1
L 8
+AR1 //4.1 + 8 bits = 5.1
U E0.0
= A[AR1,P#0.0] //Se activa la salida A5.1

■■ “+AR1 P#Byte.Bit” suma el puntero P#Byte.Bit al puntero contenido en AR1.

L P#4.1
L AR1
+AR1 P#5.0 //4.1 + 5.0 = 9.1
U E0.0
= A[AR1,P#0.0] //Se activa la salida A9.1

126
6: Direccionamiento indirecto y matrices

6.3.  Array - matrices


Un array combina varios datos de un solo tipo (simples o compuestos) formando una
unidad.

Para definir un array en un DB o en una tabla de declaración de variables:

1. Indicar el nombre del array.

2. Declararlo con la clave ARRAY[]

3. Indicar el tamaño del array a través de un índice. Se ha de indicar el primer y el


último número de las dimensiones (6 máximo) [límite inferior..límite superior]

4. Indicar el tipo de datos a memorizar en el array.

Matriz unidimensional
ARRAY de 1 dimensión:

En el DB1 defino un Array[1..3] de tipo de datos INT:

Dirección Nombre Tipo Valor inicial Comentario


0.0 STRUCT
+0.0 Matriz ARRAY[1..3]
*2.0 valor2 INT
=6.0 END_STRUCT

Para acceder a estos datos: Matriz[1], Matriz[2] y Matriz[3]:

Dirección Nombre Tipo Valor inicial Valor actual Comentario


0.0 Matriz[1] INT 0 0
2.0 Matriz[2] INT 0 0
4.0 Matriz[3] INT 0 0

127
Autómatas programables avanzado

Para introducir valores iniciales en el array:


Individualmente: valores separados por coma.
En nuestro ej.: 5,7,-100
Indicar factor de repetición:

3(8) En nuestro ejemplo le daría a los tres elementos valor 8


1, 2(37). Al primero le doy valor 1 y a los dos últimos valor 37

Matriz bidimensional:
ARRAY [1..2,1..3] = Matriz de 2 x 3, primer elemento= [1,1]
Último elemento= [2,3]
Para acceder a estos datos: Matriz[1,1], Matriz[1,2], Matriz[1,3], Matriz[2,1],
Matriz[2,2] y Matriz[2,3].

Observaciones
■■ El índice puede ser un valor entre –32768 y 32767

Datos[-1,1] tiene como elementos: Datos[-1], Datos[0] y Datos[1]

■■ Las matrices se pueden usar como parámetros. Si es así, se debe transferir


como array completo y no como elementos individuales.

Declaro en el OB1 una variable temporal tipo Array, y en el FC1 un parámetro de


entrada “in” tipo array y de las mismas dimensiones.

128
6: Direccionamiento indirecto y matrices

OB1:d

20.0 temp Datos ARRAY [1..3]


*2.0 temp INT

FC1:

Dirección Declaración Nombre Tipo Valor inicial Comentario


0.0 in Datos_temp ARRAY[1..3]
*2.0 in INT
out
in_out
temp.

CALL FC1

Datos_temp: =#Datos

Se puede mandar sólo un elemento:

CALL FC1

Datos_temp: =#Datos[1]

129
6: Direccionamiento indirecto y matrices

RESUMEN

El autómata es una máquina industrial programable basada en un sistema de
microprocesador, con un hardware y un software incorporado que permite la ejecución
de programas de usuario, escritos en algún lenguaje de programación.


Como en todo sistema microprocesador, en el autómata se identifican cuatro bloques
básicos diferenciados:

■■ CPU o unidad central de proceso.


■■ Memoria interna de trabajo (RAM).
■■ Memoria de programa (RAM, EPROM, EEPROM).
■■ Interfaces de entrada y salida.

El trabajar correctamente con los buses de datos y direcciones hacen al autómata
mucho más rápido y se produce en el proceso un número menor de alarmas.

■ El traslado rápido de datos a memoria conlleva un sistema mucho más eficiente.

131
7 7
Autómatas programables avanzado
DIDÁCTICA
UNIDAD

7.  Regulación PID


7: Regulación PID

ÍNDICE
OBJETIVOS................................................................................................................................................................ 137
INTRODUCCIÓN....................................................................................................................................................... 138
7.1.  Concepto del control proporcional integral derivativo (PID)............................................................................. 139
7.2. Parametrización................................................................................................................................................... 140
7.3.  Regulación continua “FB 41” “CONT_C”........................................................................................................... 141
7.4.  Regulación discontinua “FB 42” “CONT_S”...................................................................................................... 148
7.5.  Formación de impulsos “FB 43” “PULSEGEN”.................................................................................................. 153
7.6.  Ejemplo con el bloque “PULSEGEN”.................................................................................................................. 161
RESUMEN................................................................................................................................................................... 165

135
7: Regulación PID

OBJETIVOS
■ Conocer los procesos industriales más utilizados.

■ Clasificar los distintos procesos de control más importante en el ámbito industrial.


Conocer los módulos especiales de programación para realizar controles más precisos en
la industria.

■ Saber identificar y configurar las constantes en un algoritmo de control.

■ Ver como reacciona un proceso cuando se cambian los parámetros de control.

■ Observar como calcula un autómata la parametrización de esas variables de control.

137
Autómatas programables avanzado

INTRODUCCIÓN

Las interfaces específicas permiten la conexión con A diferencia de las entradas/salidas inteligentes, que
elementos o procesos particulares de la planta, limitan a unos pocos los parámetros necesarios para
realizando funciones que van desde la lectura directa su funcionamiento (funciones muy especializadas),
de termopares hasta la presentación de sipnósticos los procesadores periféricos, de uso más general,
y control SCADA, pasando por la regulación, necesitan más información para definir, no sólo la
posicionamiento de ejes, etc. configuración del periférico, sino además:
Estas interfaces específicas están disponibles para ■■ Condiciones de aplicación, que definen las condiciones
autómatas modulares de gamas media y alta, de entorno.
máquinas que exigen, por su mayor campo de ■■ Consignas a seguir.
aplicaciones, mayor personalización que los micro y
miniautómatas. ■■ Condiciones de control, que definen la respuesta según la
evolución del proceso.
Aunque a todas estas interfaces se les denomina, en
general, específicas por lo concreto de la función que El conjunto de estos valores, enviados al periférico
realizan, se pueden distinguir entre ellos tres grupos desde la unidad de programación o desde la CPU
bien diferenciados: principal, se denomina programa de la interfaz.

■■ Entradas/salidas especiales. Se debe destacar, sin embargo, cómo, en modo


estricto, no se está programando sino parametrizando
■■ Entradas/salidas inteligentes. la tarjeta.
■■ Procesadores periféricos inteligentes.

138
7: Regulación PID

7.1.  Concepto del control proporcional integral


derivativo (PID)
Los bloques de función (FB) de PID Control (Regulación PID) comprenden los bloques
para regulación continua (CONT_C) y para regulación discontinua (CONT_S), así como
el bloque para la modulación de ancho de impulsos (PULSEGEN).

Los bloques de regulación suponen una regulación meramente software, es decir,


un bloque contiene todas las funciones del regulador. Los datos necesarios para el
cálculo cíclico están almacenados en los bloques de datos asociados. De esta forma
es posible llamar varias veces los FB.

El FB ”PULSEGEN” se combina con el bloque FB CONT_C para obtener un regulador


con salida de impulsos para atacar actuadores proporcionales.

Un regulador realizado por medio de los FB se compone de una serie de funciones


parciales parametrizables por el usuario. Además del regulador con su algoritmo PID,
los FB incluyen funciones de acondicionamiento de valor de consigna, de valor real así
como de la magnitud manipulada calculada.

Una regulación creada con los dos bloques mencionados es neutra, por principio, en
cuanto a sus posibles aplicaciones. El rendimiento de regulación y con ello la velocidad
de procesamiento dependen únicamente de la potencia de la CPU utilizada.

Para una CPU dada, es necesario encontrar un compromiso entre el número de


reguladores y la frecuencia de procesamiento de cada uno de ellos.

Cuanto más rápidos sean los lazos de regulación, es decir, deban calcularse con
mayor frecuencia las magnitudes manipuladas por unidad de tiempo, menor es el
número de reguladores instalables.

Existen restricciones relativas al tipo de proceso a regular, ya que los bloques de


función se aplican a sistemas inerciales (temperaturas, niveles de llenado, etc.), así
como a sistemas muy rápidos (caudal, velocidad de rotación, etc.).

El comportamiento estático (ganancia) y las propiedades dinámicas (retardo, tiempo


muerto, constante de integración, etc.) del sistema o proceso regulado ejerce una
influencia decisiva sobre el diseño del regulador y el dimensionamiento de sus
parámetros estáticos (acción P) y dinámicos (acciones I y D).

Por ello es indispensable conocer exactamente el tipo y las características del sistema
o proceso regulado.

Es prácticamente imposible influenciar las propiedades de los sistemas o procesos


regulados porque resultan de datos mecánicos y de ingeniería química. La elección
del tipo de regulador más apropiado al sistema o proceso regulado y su adaptación al
comportamiento temporal de este último son los únicos medios de obtener un buen
resultado de regulación.

139
Autómatas programables avanzado

7.2.  Parametrización
Bajo Windows, el interface de usuario de parametrización de PID Control se llama con
la secuencia de comandos siguiente:

Inicio > SIMATIC > STEP 7 V3 > Parametrizar Regulación PID

En la primera pantalla es posible bien abrir un DB de instancia ya existente y asociado


al FB 41 ”CONT_C” ó FB 42 ”CONT_S” , o crear un nuevo bloque DB en calidad de
DB de instancia.

Si se desea crear un nuevo DB de instancia, el sistema pregunta a qué FB desea


asociarlo.

El FB 43 ”PULSEGEN” no dispone de interface de usuario para parametrización.

Sus parámetros deben definirse con los medios de STEP 7.

El interface de usuario para la parametrización de PID Control (Regulación PID) sirve


también para parametrizar la Regulación integrada de la CPU 314 IFM. Para ello, crear
DB’s de instancia para asociar al (S)FB 41 ó 42.

El interface de usuario para parametrización dispone de una ayuda integrada que le


asiste durante la parametrización de los bloques de regulación. Existen las posibilidades
siguientes de llamar la ayuda online:

■■ Por el comando Ayuda > Temas de Ayuda...

■■ Pulsando la tecla F1.

■■ Pulsando el botón de ayuda en las diferentes pantallas de parametrización.

140
7: Regulación PID

7.3.  Regulación continua “FB 41” “CONT_C”


El FB ”CONT_C” sirve para la regulación de procesos industriales con magnitudes de
entrada y salida continuas utilizando sistemas de automatización SIMATIC S7.

Mediante la parametrización es posible conectar o desconectar las funciones parciales


del regulador PID, adaptándolo así al proceso regulado.

El regulador puede aplicarse como regulador PID de consigna fija, autónomo o también
en regulaciones de varios lazos como regulador en cascada, regulador de mezcla o
regulador de relación. Su modo de trabajo se basa en el algoritmo de regulación
PID del regulador muestreado con señal de salida analógica, complementada dado el
caso por una etapa de formación de impulsos para la creación de señales de salida
con modulación de ancho de impulsos para regulaciones de dos o tres puntos con
actuadores proporcionales.

Junto a las funciones en las ramas de valores de consigna y real, el FB realiza un


regulador PID completo con salida continua de magnitud manipulada y posibilidad de
influenciar manualmente el valor manipulado.

A continuación se describen las funciones parciales:

■■ Rama de valor de consigna:

El valor de consigna se introduce en la entrada SP_INT en formato en coma


flotante.

■■ Rama de valor real:

El valor real puede ser leído en formato de periferia y en formato en coma flotante.

La función CRP_IN transforma el valor de periferia PV_PER en un formato en


coma flotante de -100 ... +100 %, según la fórmula siguiente:

100
Salida de CPR _ IN = PV _ PER ⋅
27648
La función PV_NORM normaliza la salida de CRP_IN según la fórmula siguiente:

Salida de PV_NORM = (salida de CPR_IN) * PV_FAC + PV_OFF

El valor por defecto de PV_FAC es 1 y el de PV_OFF es 0.

141
Autómatas programables avanzado

■■ Formación del error de regulación:

La diferencia entre el valor de consigna y el valor real es la diferencia o error


de regulación. Para suprimir la pequeña oscilación permanente debida a la
cuantificación de la magnitud manipulada (p. ej. en una modulación de ancho de
impulsos con PULSEGEN), el error de regulación se conduce por una zona muerta
(DEADBAND). Cuando DEADB_W = 0, la zona muerta está desconectada.

■■ Algoritmo PID:

El algoritmo PID trabaja en el algoritmo de posición. Las acciones proporcional,


integral (INT) y derivativa (DIF) están conectadas en paralelo y pueden conectarse
y desconectarse individualmente. De esta forma pueden parametrizarse
reguladores P, PI, PD y PID, pero también son posibles reguladores integrales
con una mínima compensación derivativa.

■■ Procesamiento de valores manuales:

Es posible conmutar entre modo manual y modo automático. En el modo


manual, la magnitud manipulada sigue a un valor ajustado manualmente.

El integrador (INT) se pone internamente a LMN - LMN_P - DISV y el diferenciador


(DIF) se pone a 0 y se compensa internamente. La conmutación al modo
automático se efectúa así sin choques.

■■ Procesamiento de valores manipulados:

El valor manipulado se limita con la función LMNLIMIT a valores prefijables.


La superación de los límites por parte de la magnitud de entrada se señaliza
mediante bits al efecto.

La función LMN_NORM normaliza la salida de LMNLIMIT según la fórmula


siguiente:

LMN = (Salida de LMNLIMIT) * LMN_FAC + LMN_OFF

El valor por defecto de LMN_FAC es 1 y el de LMN_OFF es 0.

El valor manipulado está también disponible en formato de periferia. La función


CRP_OUT transforma el valor en coma flotante LMN en un valor de periferia
según la fórmula siguiente:

27648
LMN _ PER = LMN ⋅
100
■■ Aplicación de magnitud perturbadora (control anticipativo):

En la entrada DISV puede aplicarse aditivamente una magnitud perturbadora.

142
7: Regulación PID

■■ Rearranque completo / Rearranque:

El FB ”CONT_C” dispone de una rutina de rearranque completo que se ejecuta


cuando el parámetro de entrada COM_RST = TRUE.

Al arrancar, el integrador se ajusta internamente al valor de inicialización I_ITVAL.

Si se llama en un nivel de alarma cíclica, continúa trabajando a partir de este valor.


Todas las demás salidas se ponen a sus valores por defecto y no se emplea la
palabra de información de error RET_VAL.

Esquema de Bloques “CONT_C”:

143
Autómatas programables avanzado

Parámetros de Entrada (INPUT) FB 41 ”CONT_C”:

Tipo de Por
Parámetro Valores posibles Descripción
datos defecto
COM_RST BOOL FALSE COMPLETE RESTART / Rearranque completo.

El bloque tiene una rutina de rearranque completo que se ejecuta cuando está
activada la entrada “Rearranque completo”.
MAN_ON BOOL TRUE MANUAL VALUE ON / Conectar modo manual.

Si está activada la entrada “Conectar modo manual”, está interrumpido el lazo


de regulación. Como valor manipulado se fuerza un valor manual.
PVPER_ON BOOL FALSE PROCESS VARIABLE PERIPHERY ON / Conectar valor real de periferia.

Si debe leerse el valor real de la periferia, conectar la entrada PV_PER con la


periferia y activar la entrada “Conectar valor real de periferia”
P_SEL BOOL TRUE PROPORTIONAL ACTION ON / Conectar acción P

En el algoritmo PID pueden conectarse y desconectarse individualmente las


acciones PID. La acción P está conectada si está activada la entrada “Conec-
tar acción P”.
I_SEL BOOL TRUE INTEGRAL ACTION ON / Conectar acción I

En el algoritmo PID pueden conectarse y desconectarse individualmente las


acciones PID. La acción I está conectada si está activada la entrada “Conectar
acción I”.
INT_HOLD BOOL FALSE INTEGRAL ACTION HOLD / Congelar acción I

La salida del integrador puede congelarse. Para ello se ha de activar la entra-


da “Congelar acción I”.
I_ITL_ON BOOL FALSE INITIALIZATION OF THE INTEGRAL ACTION / Inicializar acción I.

La salida del integrador puede inicializarse a la entrada I_ITLVAL.


D_SEL BOOL FALSE DERIVATIVE ACTION / Conectar acción D.

En el algoritmo PID pueden conectarse y desconectarse individualmente las


acciones PID. La acción D está conectada si está activada la entrada “Conec-
tar acción D”.
CYCLE TIME >=1ms T#1s SAMPLE TIME / Tiempo de muestreo.

El tiempo entre las llamadas del bloque deber ser constante. La entrada
“Tiempo de muestreo” indica el tiempo entre las llamadas del bloque.
SP_INT REAL -100.0...100.0 (%) ó 0.0 INTERNAL SETPOINT / Consigna interna.
magnitud física 1)
La entrada “Consigna interna” sirve para ajustar un valor de consigna.
PV_IN REAL -100.0...100.0 (%) ó 0.0 PROCESS VARIABLE IN / Entrada de valor real
magnitud física 1)
En la entrada “Entrada de valor real” puede parametrizarse un calor de puesta
en servicio, o aplicarse un valor real externo en formato en coma flotante.

144
7: Regulación PID

Parámetros de Entrada (INPUT) FB 41 ”CONT_C” (Continuación).

Tipo de
Parámetro Valores posibles Por defecto Descripción
datos
PV_PER WORD W#16#0000 PROCESS VARIABLE PERIPHERY / Valor real de periferia.

El valor real en formato de periferia se aplica al regulador en la entrada


“Valor real de periferia”
MAN REAL -100.0...100.0 0.0 MANUAL VALUE / Valor manual
(%) ó magnitud
física 2) La entrada “Valor manual” sirve para establecer un valor manual mediante
función de manejo/visualización (interface hombre máquina).
GAIN REAL 2.0 PROPORTIONAL GAIN / Ganancia proporcional.

La entrada “Ganancia proporcional” indica la ganancia del regulador.


TI TIME >=CYCLE T#20s RESERT TIME / Tiempo de acción integral.

La entrada “Tiempo de acción integral” determina el comportamiento


temporal del interador.
TD TIME >=CYCLE T#10s DERIVATE TIME / Tiempo de diferenciación (acción derivativa).

La entrada “Tiempo de diferenciación” determina el comportamiento


temporal del diferenciador.
TM_LAG TIME >=CYCLE/2 T#2s TIME LAG OF THE DERIVATIVE ACTION / Tiempo de retarde de la acción D.

El algoritmo de la acción D contiene un retardo que puede parametrizarse


en la entrada “Tiempo de retardo de la acción D”.
DEADB_W REAL -100.0...100.0 0.0 DEAD BAND WIDTH / Ancho de zona muerta.
(%) ó magnitud
física 1) El error de regulación se conduce por una zona muerta. La entrada “Ancho
de zona muerta” determina el tamaño de la zona muerta.
LMN_HLM REAL LMN_LLM 100.0 MANIPULATED VALUE HIGH LIMIT / Límite superior del valor manipulado.
…100.0 (%) ó
magnitud física 2) El valor manipulado tiene siempre un límite superior y uno interior. La
entrada “Límite superior del valor manipulado” indica el límite superior.
PV_FAC REAL 1.0 PROCESS VARIABLE FACTOR / Factor de valor real.

La entrada “Factor de valor real” se multiplica por el valor real. La entrada


sirve para la adaptación del margen de valor real.
PV_OFF REAL 0.0 PROCESS VARIABLE OFFSET / Offset del valor real.

La entrada “Offset del valor real” se suma con el valor real. La entrada
sirve para la adaptación del margen de valor real.
LMN_FAC REAL 1.0 MANIPULATED FACTOR / Factor del valor manipulado.

La entrada “Facto del valor manipulado” se multiplica por el valor manipu-


lado. La entrada sirve para la adaptación del margen de valor manipulado.

145
Autómatas programables avanzado

Parámetros de Entrada (INPUT) FB 41 ”CONT_C” (Continuación).

Tipo de Valores posi-


Parámetro Por defecto Descripción
datos bles
LMN_OFF REAL 0.0 MANIPULATED VALUE OFFSET/ Offset del valor manipulado.

La entrada “Offset del valor manipulado” se suma al valor manipulado. La


entrada sirve para la adaptación del margen de valor manipulado.
I_ITLVAL REAL -100.0...100. 0 0.0 INITIALIZATION VALUE OF THE INTEGRAL ACTION / Valor de inicialización de
(%) ó magnitud la acción I.
física 2)
La salida del integrador puede forzarse con la entrada I_ITL_ON. En la en-
trada “Valor de inicialización de la acción I” está el valor de la inicialización.
DISV REAL -100.0...100. 0 0.0 DISTURBANCE VARIABLE / Magnitud perturbadora.
(%) ó magnitud
física 2) Para control anticipativo de la magnitud perturbadora, ésta se conecta en la
entrada “Magnitud perturbadora”.

1. Parámetros en las ramas de valor de consigna y de valor real con la misma


unidad.

2. Parámetros en la rama de valor manipulado con la misma unidad.

Parámetros de Salida (OUTPUT) FB 41 ”CONT_C”.

Tipo de Valores
Parámetro Por defecto Descripción
datos posibles
LMN REAL 0.0 MANIPULATED VALUE / Valor manipulado.

En la salida “Valor manipulado” se saca en formato en coma flotante el


valor manipulado que actúa efectivamente.
LMN_PER WORD W#16#0000 MANIPULATED VALUE PERIPHERY / Valor manipulado periferia.

En esta salida entrega el valor manipulado en formato periferia.


QLMN_HLM BOOL FALSE HIGH LIMIT OF MANIPULATED VALUE REACHED / Alcanzado el límite
superior del valor manipulado.

El valor manipulado tiene siempre un límite superior y un límite inferior.


La salida “Alcanzado el límite superior del valor manipulado” indica la
superación de la limitación superior.
QLMN_LLM BOOL FALSE LOW LIMIT OF MANIPULATED VALUE REACHED / Alcanzado el límite
inferior del valor manipulado.

El valor manipulado tiene siempre un límite superior y un límite inferior.


La salida “Alcanzado el límite superior del valor manipulado” indica la
superación de la limitación inferior.
LMN_P REAL 0.0 PROPORTIONALY COMPONENT / Acción P.

La salida “Acción P” contiene la componente proporcional de la magnitud


manipulada.

146
7: Regulación PID

Parámetros de Salida (OUTPUT) FB 41 ”CONT_C” (Continuación).

Tipo de Valores
Parámetro Por defecto Descripción
datos posibles
LMN_I REAL 0.0 INTEGRAL COMPONENT / Acción I.

La salida “Acción I” contiene la componente integral de la magnitud manipulada.


LMN_D REAL 0.0 DERIVATIVE COMPONENT / Acción D.

La salida “Acción D” contiene la componente diferencial de la magnitud manipulada.


PV REAL 0.0 PROCESS VARIABLE / Valor real.

Por la salida “Valor real” se emite el valor real que actúa efectivamente.
ER REAL 0.0 ERROR SIGNAL / Error de regulación.

Por la salida “Error de regulación” se emite la diferencia o error de regulación que actúa
efectivamente.

147
Autómatas programables avanzado

7.4.  Regulación discontinua “FB 42” “CONT_S”


El FB ”CONT_S” sirve para la regulación de procesos técnicos con señales de salida
de valor manipulado binarias para actuadores de acción integral utilizando sistemas
de automatización SIMATIC S7. A través de la parametrización pueden conectarse o
desconectarse, funciones parciales del regulador discontinua PI, adaptándolo así al
proceso regulado.

El regulador puede aplicarse como regulador de valor fijo PI, autónomo o en lazos
de regulación subordinados en regulaciones de cascada, regulaciones de mezcla o
regulaciones de relación, pero no como regulador piloto. Su modo de trabajo se basa
en el algoritmo de regulación PI del regulador muestreado y es completado con los
elementos funcionales para la generación de la señal de salida binaria a partir de la
señal manipulada analógica.

Junto a las funciones en la rama de valor real, el FB realiza un regulador PI terminado


con salida binaria de valor manipulado y posibilidades de influir manualmente sobre
éste. El regulador, discontinuo, trabaja sin respuesta (reenvío) de posición.

A continuación se expone la descripción de las funciones parciales:

Rama de valor de consigna:

El valor de consigna se introduce en la entrada SP_INT en formato en coma flotante.

Rama de valor real:

El valor real puede ser leído en formato de periferia y en formato en coma flotante.

La función CRP_IN transforma el valor de periferia PV_PER en un formato en coma


flotante de -100 ... +100 %, según la fórmula siguiente:

100
Salida de CPR _ IN = PV _ PER ⋅
27648
La función PV_NORM normaliza la salida de CRP_IN según la fórmula siguiente:

Salida de PV_NORM = (Salida de CPR_IN) * PV_FAC + PV_OFF

El valor por defecto de PV_FAC es 1 y el de PV_OFF es 0.

■■ Formación del error de regulación:

La diferencia entre el valor de consigna y el valor real es la diferencia o error


de regulación. Para suprimir la pequeña oscilación permanente debida a
la cuantificación de la magnitud manipulada (resolución limitada del valor
manipulado por la válvula de control), el error de regulación se conduce por
una zona muerta (DEADBAND). Cuando DEADB_W = 0, la zona muerta está
desconectada.

148
7: Regulación PID

■■ Algoritmo discontinuo PI:

El FB trabaja sin respuesta (reenvío) de posición. La acción I del algoritmo PI


y la respuesta imaginaria de posición se calculan en un integrador (INT) y se
comparan como valor de retorno con la acción P restante. La diferencia pasa a un
elemento de tres puntos (THREE_ST) y a un formador de impulsos (PULSEOUT),
que crea los impulsos para la válvula de control. A través de una adaptación del
umbral de respuesta del elemento de tres puntos se reduce la frecuencia de
conmutación del regulador.

■■ Aplicación de magnitud perturbadora (control anticipativo):

En la entrada DISV puede aplicarse aditivamente una magnitud perturbadora.

■■ Rearranque completo / Rearranque:

El FB ”CONT_S” dispone de una rutina de rearranque completo que se ejecuta


cuando está puesto el parámetro de entrada COM_RST = TRUE.

Todas las salidas se ponen a sus valores por defecto.

No se emplea la palabra de información de error RET_VAL.

Esquema de Bloques “CONT_S”:

149
Autómatas programables avanzado

Parámetros de Entrada (INPUT) FB 42 ”CONT_S”.

Tipo de
Parámetro Valores posibles Por defecto Descripción
datos
COM_RST BOOL FALSE COMPLETE RESTART / Rearranque completo.

El bloque tiene una rutina de rearranque completo que se ejecuta


cuando está activada la entrada “Rearranque completo”.
LMNR_HS BOOL FALSE HIGH LIMIT SIGNAL OF REPEATED MANIPULATED VALUE / Señal de
límite superior de la respuesta de posición.

La señal “Válvula de control en el tope superior” se conecta en la


entrada “Señal de límite superior de la respuestas de posición”.
LMNR_HS=TRUE significa: la válvula de control se encuentra en el
tope superior.
LMNR_LS BOOL FALSE LOW LIMIT SIGNAL OF REPEATED MANIPULATED VALUE / Señal de
límite inferior de la respuesta de posición.

La señal “Válvula de control en el tope inferior” se conecta en la


entrada “Señal de límite inferior de la respuestas de posición”.
LMNR_LS=TRUE significa: la válvula de control se encuentra en el
tope inferior.
LMNS_ON BOOL TRUE MANIPULATED SIGNALS ON / Conectar modo manual de las señales
manipuladas.

En la entrada “Conectar modo manual en señales manipuladas” se


pasa a modo manual el procesamiento de señal de valor manipu-
lado.
LMNUP BOOL FALSE MANIPULATED SIGNALS UP / Subir señal manipulada.

En el modo manual, esta entrada “Subir señal manipulada” sirve


para forzar la señal de salida QLMNUP.
LMNDN BOOL FALSE MANIPULATED SIGNALS DOWN / Bajar señal manipulada.

En el modo manual, esta entrada “Bajar señal manipulada” sirve


para forzar la señal de salida QLMNDN.
PVPER_ON BOOL FALSE PROCESS VARIABLE PERIPHERY ON / Conectar valor real de perife-
ria.

Para leer el valor real de la periferia, debe conectarse la entrada


PV_PER con la periferia y se ha de activar la entrada “Conectar
valor real de periferia”.
CYCLE TIME >=1ms T#1s SAMPLE TIME / Tiempo de muestreo.

El tiempo entre las llamadas de bloque debe ser constante. La


entrada “Tiempo de muestreo” indica el tiempo entre las llamadas
de bloqueo.
SP_INT REAL -100.0…100.0 0.0 INTERNAL SETPOINT / Consigna interna.
(%) o magnitud
física 1) La entrada “Consigna interna” sirve para fijar un valor de consigna.

150
7: Regulación PID

Parámetros de Entrada (INPUT) FB 42 ”CONT_S” (Continuación).

Tipo de
Parámetro Valores posibles Por defecto Descripción
datos
PV_IN REAL -100.0…100.0 0.0 PROCESS VARIABLE IN / Entrada de valor real.
(%) o magnitud
física 1) En la entrada “Entrada de valor real” puede para metrizrse un valor
de puesta en servicio o aplicarse un valor real externo en formato en
coma flotante.
PV_PER WORD W#16#0000 PROCESS VARIABLE PERIPHERY / Valor real de periferia.

El valor real en formato de periferia se aplica al regulador en la


entrada “Valor real de periferia”.
GAIN REAL 2.0 PROPORTIONAL GAIN / Ganancia proporcional.

La entrada “Ganancia proporcional” indica la ganancia del regulador.


TI TIME >=CYCLE T#20s REST TIME / Tiempo de acción integral.

La entrada “Tiempo de acción integral” determina el comportamien-


to temporal del integrador.
DEADB_W REAL -100.0…100.0 1.0 DEAD BAND WIDTH / Ancho de zona muerta.
(%) o magnitud
física 1) El error de regulación se conduce a través de una zona muerta. La
entrada “Ancho de zona muerta” determina el tamaño de la zona
muerta.
PV_OFF REAL 1.0 PROCESS VARIABLE FACTOR / Factor de valor real.
PV_OFF REAL 0.0 La entrada “Offset de valor real” se suma al valor real. La entrada
sirve para la adaptación del área de valor real.
PULSE_TM TIME >=CYCLE T#3s MINIMUM PULSE TIME / Duración mínima de impulso.

En el parámetro “Duración mínima de impulso” puede parametrizar-


se una longitud de impulso mínima.
BREAK_TM TIME >=CYCLE T#3s MINIMUM BREAK TIME / Duración mínima de pausa.

En el parámetro “Duración mínima de pausa” puede parametrizarse


una longitud de pausa mínima.
MTR_TM TIME >=CYCLE T#30s MOTOR MANIPULATED VALUE / Valor manipulado del motor.

En el parámetro “Valor manipulado del motor” se consigna el tiempo


de desplazamiento de la válvula de control de tope a tope.
DISV REAL -100.0…100.0 0.0 DISTURBANCE VARIABLE / Magnitud perturbadora.
(%) o magnitud
física 1) Para el control anticipativo de magnitud perturbadora se conecta la
magnitud perturbadora en la entrada “Magnitud perturbadora”.

151
Autómatas programables avanzado

Parámetros en las ramas de valor de consigna y valor real con la misma unidad.

1. Parámetros en la rama de valor manipulado con la misma unidad.

Parámetros de Salida (OUTPUT) FB 42 ”CONT_S”.

Tipo de
Parámetro Valores posibles Por defecto Descripción
datos
QLMNUP BOOL FALSE MANIPULATED SIGNAL UP / Subir señal manipulada.

Estando activada la salida “Subir señal manipulada”, debe abrirse la válvula de


control.
QLMNDN BOOL FALSE MANIPULATED SIGNAL DOWN / Bajar señal manipulada.

Estando puesta la salida “Bajar señal manipulada”, debe cerrarse la válvula de


control.
PV REAL 0.0 PROCESS VARIABLE / Valor real.

En la salida “Valor real” se emite el valor real que actúa efectivamente.


ER REAL 0.0 ERROR SIGNAL / Error de regulación.

En la salida “Error de regulación” se emite la diferencia o error de regulación que


actúa efectivamente.

152
7: Regulación PID

7.5.  Formación de impulsos “FB 43” “PULSEGEN”


El FB ”PULSEGEN” sirve para construir un regulador PID con salida de impulsos para
gobernar actuadores proporcionales.

El FB ”PULSEGEN” permite realizar reguladores PID de dos o de tres puntos con


salida con modulación de ancho de impulsos. Este bloque de función se aplica casi
siempre en combinación con el regulador continuo ”CONT_C”.

PULSEGEN transforma la magnitud de entrada INV (= LMN del regulador PID) por
modulación del ancho de impulsos en un tren de impulsos de período constante, que
corresponde al tiempo de ciclo con el que se actualiza la magnitud de entrada y que
debe parametrizarse en PER_TM.

La duración de un impulso por período es proporcional a la magnitud de entrada.

Aquí, el ciclo parametrizado mediante PER_TM no es idéntico al tiempo de


procesamiento del FB ”PULSEGEN”. Por el contrario, un ciclo PER_TM se compone
de varios ciclos de procesamiento del FB ”PULSEGEN” donde la cantidad de llamadas
del FB ”PULSEGEN” por cada ciclo PER_TM representa una medida de la precisión
de la modulación del ancho de impulsos.

Figura 7.2.  Modulación del ancho de impulsos.

153
Autómatas programables avanzado

Una magnitud de entrada del 30 % y 10 llamadas del FB ”PULSEGEN” por cada


PER_TM significan pues:

■■ ”Uno” en la salida QPOS para las primeras tres llamadas del FB ”PULSEGEN”
(30 % de 10 llamadas).
■■ ”Uno” en la salida QPOS para las tres primeras llamadas del FB ”PULSEGEN”
(70% de 10 llamadas).
Esquema de Bloques “PULSEGEN”:

En este ejemplo, una ”relación de muestreo” de 1:10 (llamadas de CONT_C respecto


a llamadas PULSEGEN) limita la precisión del valor manipulado al 10 %; es decir, los
valores de entrada INV solamente pueden representarse en pasos del 10% en un
ancho de impulsos en la salida QPOS.

Correspondientemente, la precisión aumenta con la cantidad de llamadas del FB


”PULSEGEN” por cada llamada del CONT_C.

Así, p. ej., si se llama PULSEGEN 100 veces más que CONT_C, se consigue una
resolución del 1 % del margen de valor manipulado.

La relación entre frecuencias de llamada debe ser programada por el usuario.

Existe la posibilidad de sincronizar automáticamente la salida de impulsos con el


bloque que actualiza la magnitud de entrada INV (por ejemplo CONT_C). De esta
forma queda garantizado que una variación de la magnitud de entrada se traduzca
con la máxima rapidez en un impulso a la salida.

El formador de impulsos evalúa siempre la magnitud de entrada INV a intervalos


correspondientes al período PER_TM, y transforma el valor en una señal de impulso
del ancho correspondiente.

154
7: Regulación PID

Pero como INV se calcula casi siempre en un nivel de alarma cíclica más lento, el
formador de impulsos debería comenzar lo más rápidamente posible después de la
actualización de INV a transformar el valor discreto en un impulso.

Para ello, el bloque puede sincronizar él mismo el arranque del período según el
siguiente procedimiento:

Si ha variado INV y la llamada de bloque no se encuentra en el primer ciclo de llamada


o en los dos últimos ciclos de un período, tiene lugar una sincronización. El ancho
de impulsos se calcula de nuevo y la salida se pone a “1” en el siguiente ciclo que
constituye al mismo tiempo el inicio de un nuevo período.

Sincronización del arranque del período:

La sincronización automática puede desconectarse en la entrada ”SYN_ON” (=


FALSE).

Según la parametrización del formador de impulsos, es posible configurar los


reguladores PID con acción de tres puntos, con salida de dos puntos bipolar o
unipolar. La tabla siguiente muestra cómo posicionar los conmutadores para obtener
los diferentes modos:

En el modo de operación “Regulación de tres puntos” pueden generarse tres estados


de la señal manipulada. Para ello se asignan los valores de estado de las señales
binarias de salida QPOS_P y QNEG_P a los correspondientes estados operativos del
actuador. La tabla muestra el ejemplo de una regulación de temperatura:

Actuador
Calentar OFF Enfriar
Impulso
QPOS_P TRUE FALSE FALSE
QNEG_P FALSE TRUE TRUE

155
Autómatas programables avanzado

A partir de la magnitud de entrada se calcula la duración del impulso mediante una


característica. La forma de esta característica está definida por la duración mínima de
impulso o duración mínima de pausa y por el factor de relación.

El valor normal del factor de relación es 1.

Los codos de la característica son originados por la duración mínima de impulso y por
la duración mínima de pausa.

■■ Duración mínima de impulso y duración mínima de pausa:

Una parametrización correcta de la duración mínima de impulsos y de la duración


mínima de pausas P_B_TM puede evitar conmutaciones frecuentes de conexión
y desconexión que afectan a la vida útil de contactos y elementos finales de
control (actuadores).

La duración de los impulsos positivos o negativos se calcula multiplicando la


magnitud de entrada (en %) por el período:

INV
Duración de impulso =  PER _ TM
100

Figura 7.3.  Característica simétrica del regulador de tres puntos (factor de relación = 1).

El factor de relación RATIOFAC permite modificar la relación de la duración de


impulsos positivos respecto a los negativos. En un proceso térmico es posible
con ello por ejemplo, considerar constantes de tiempo diferentes para el
calentamiento y el enfriamiento.

El factor de relación influye también sobre la duración mínima de impulso y


duración mínima de pausa. Un factor de relación < 1 significa que el valor umbral
para impulsos negativos se multiplica por el factor de relación.

156
7: Regulación PID

■■ Factor de relación < 1:

La duración de impulso a la salida de impulso negativo calculada multiplicando la


magnitud de entrada por el período se reduce en el factor de relación.

INV
Duración de impulso negativo =  PER _ TM
100

INV
Duración de impulso positivo =  PER _ TM  RATIOFAC
100

Figura 7.4.  Característica asimétrica del regulador de tres puntos (factor de relación = 0.5).

■■ Factor de relación > 1:

La duración de impulso a la salida de impulso positivo calculada multiplicando la


magnitud de entrada por el período se reduce en el factor de relación.

INV
Duración de impulso negativo =  PER _ TM
100

INV PER _ TM
Duración de impulso positivo = 
100 RATIOFAC
En la regulación de dos puntos se conecta únicamente la salida de impulso
positiva QPOS_P de PULSEGEN con el correspondiente actuador todo/nada
(ON/OFF).

Según sea el modo parametrizado, el regulador de dos puntos tiene un margen


de valor manipulado bipolar o un margen unipolar.

157
Autómatas programables avanzado

Regulación de dos puntos con margen de valor manipulado bipolar (-100 % ... 100 %):

Figura 7.5.  Característica con margen de valor manipulado bipolar (-100 % ... 100 %).

Regulación de dos puntos con margen de valor manipulado unipolar (0 % ... 100 %).

Figura 7.6.  Característica con margen de valor manipulado unipolar (0 % ... 100 %).

QNEG_P suministra la señal de salida negada, si la conexión del regulador de dos


puntos en el lazo de regulación exige una señal binaria invertida lógicamente para los
impulsos de la señal manipulada.

Actuador
ON OFF
Impulso
QPOS_P TRUE FALSE
QNEG_P FALSE TRUE

En modo manual (MAN_ON = TRUE) las salidas binarias del regulador de tres puntos
o dos puntos pueden forzarse a través de las señales POS_P_ON y NEG_P_ON con
independencia de INV.

POS_P_ON NEG_P_ON QPOS_P QNEG_P


Regulación de tres puntos FALSE FALSE FALSE FALSE
TRUE FALSE TRUE FALSE FALSE
FALSE TRUE FALSE TRUE FALSE
TRUE TRUE

158
7: Regulación PID

Regulación de dos puntos FALSE cualquiera FALSE TRUE FALSE


TRUE cualquiera TRUE

Rearranque completo / Rearranque:

En caso de rearranque completo se ponen a cero todas las salidas de señal.

El bloque no efectúa ninguna verificación de error interna y no se utiliza la palabra


indicadora de error RET_VAL.

Parámetros de entrada (INPUT) FB 43 ”PULSEGEN”.

Por
Parámetro Tipo de datos Valores posibles Descripción
defecto
INPUT VARIABLE / Variable de entrada.
INV
REAL -100.0…100.0 (%) 0.0 En el parámetro de entrada “Variable de entrada” se aplica una magnitud de valor
manipulado analógica.
PERIOD TIME / Periodo.
PER_TM
En el parámetro “Periodo” se introduce la duración de periodo constante de
TIME >=20*CYCLE T#1s la modulación de ancho de impulsos. La duración corresponde al tiempo de
muestreo del regulador. La relación entre el tiempo de muestreo del formador de
impulsos respecto al tiempo de muestreo del regulador determina la precisión de
la modulación del ancho de impulsos.
MINIMUM PULSE/BREAK TIME / Duración mínima de impulso o duración mínima
P_B_TM
de pausa.
TIME >=CYCLE T#0ms
En el parámetro “duración mínima de impulso o duración mínima de pausa”
puede parametrizarse una longitud mínima de impulso o de pausa.
RATIO FACTOR / Factor de relación.
RATIOFAC
Este parámetro permite modificar la relación de la duración de impulsos negativos
REAL 0.1 … 10.0 1.0 a impulsos positivos. En un proceso térmico, esto permite compensar diferentes
constantes de tiempo para calentar y enfriar (por ejemplo, con calefacción
eléctrica o refrigeración por agua).
THREE STEP CONTROL ON / Conectar regulación de tres puntos.
STEP3_ON
BOOL TRUE En el parámetro de entrada “Conectar regulación de tres puntos” se activa el
correspondiente modo de operación. En la regulación de tres puntos trabajan
ambas señales de salida.
TWO STEP CONTROL FOR BIPOLAR MANIPULATED VALUE RANGE ON / Conectar
ST2BI_ON
regulación de dos puntos para margen de valores manipulados bipolar.
En el parámetro “Conectar regulación de dos puntos para margen de valores
BOOL FALSE manipulados bipolar” puede seleccionarse entre los modos de operación
“Regulación de dos puntos para margen de valores manipulados bipolar” y
“Regulación de dos puntos para margen de valores manipulados unipolar”. Debe
ser aquí STEP3_ON=FALSE.
MANUAL MODE ON / Conectar modo manual.
MAN_ON
BOOL FALSE Activando el parámetro de entrada “Conectar modo manual” es posible forzar a
mano las señales de salida.
POSITIVE MODE ON / Impulso positivo ON.
POS_P_ON
En modo manual de una regulación de tres puntos, el parámetro de entrada
BOOL FALSE “Impulso positivo ON” permite forzar la señal de salida QPOS_P. En modo manual
de una regulación de dos puntos, QNEG_P está siempre invertida respecto a
QPOS_P.
NEGATIVE PULSE ON / Impulso negativo ON.
NEG_P_ON
En modo manual de una regulación de tres puntos, el parámetro de entrada
BOOL FALSE “Impulso negativo ON” permite forzar la señal de salida QNEG_P. En modo
manual de una regulación de dos puntos, QNEG_P está siempre invertida
respecto a QPOS_P.

Parámetros de entrada (INPUT) FB 43 ”PULSEGEN”, (continuación).

159
Autómatas programables avanzado

Tipo de
Parámetro Valores posibles Por defecto Descripción
datos
SYN_ON BOOL TRUE SYNCHRONISATION ON/ Conectar sincroni-
zación.

Activando el parámetro de entrada “Conectar


sincronización”, es posible sincronizar au-
tomáticamente la salida de impulsos con el
bloque que actualiza la magnitud de entrada
INV. De esta forma queda garantizado que
una magnitud de entrada cambiante salga
también lo más rápidamente posible como
impulso.
COM_RST BOOL FALSE COMPLETE RESTART / Rearranque completo.

El bloque tiene una rutina de rearranque


completo que se ejecuta cuando está activa-
da la entrada “Rearranque completo”.
CYCLE TIME T#10ms SAMPLE TIME / Tiempo de muestreo

El tiempo entre las llamadas de bloque debe


ser constante. La entrada “Tiempo de mues-
treo” indica el tiempo entre las llamadas de
bloque.

Parámetros de salida (OUTPUT) FB 43 ”PULSEGEN”.

Tipo de
Parámetro Valores posibles Por defecto Descripción
datos
QPOS_P BOOL FALSE OUTPUT POSITIVE PULSE / Señal de salida
de impulso positivo.

El parámetro de salida “Señal de salida de


impulso positivo” está activado cuando debe
emitirse un impulso. En la regulación de tres
puntos es el impulso positivo. En la regula-
ción de dos puntos, QNEG_P está siempre
invertida respecto a QPOS_P.
QNEG_P BOOL FALSE OUTPUT NEGATIVE PULSE / Señal de salida
de impulso negativo.

El parámetro de salida “Señal de salida de


impulso negativo” está activado cuando debe
emitirse un impulso. En la regulación de tres
puntos es el impulso negativo. En la regula-
ción de dos puntos, QNEG_P está siempre
invertida respecto a QPOS_P.

160
7: Regulación PID

7.6.  Ejemplo con el bloque “PULSEGEN”


El bloque de regulación continua CONT_C y el formador de impulsos PULSEGEN
permiten realizar un regulador de consigna fija con salida de impulsos para gobernar
actuadores de acción proporcional. La figura muestra el diagrama de principio del
bucle de regulación.

Figura 7.7.  Lazo de regulación.

El regulador continuo CONT_C suministra el valor manipulado LMN que es convertido


por el formador de impulsos PULSEGEN en una señal de impulsos con ciclo de trabajo
variable QPOS_P o QNEG_P.

El regulador de valor de consigna fija con salida de impulsos para actuadores


proporcionales PULS_CTR el cual se compone de los bloques CONT_C y PULSEGEN.
La llamada de bloques está gestionada de la forma siguiente. CONT_C se llama cada
2 s (=CYCLE*RED_FAC); PULSEGEN se llama cada 10 ms (=CYCLE). El tiempo de
ciclo del OB35 está ajustado a 10 ms.

En caso de rearranque, el bloque PULS_CTR se llama en el OB100 y la entrada COM_


RST se posiciona en TRUE.

161
Autómatas programables avanzado

Figura 7.8.  Llamada de bloques e interconexión.

Programa AWL del FB PULS_CTR.

Dirección Declaración Nombre Tipo Comentario


0.0 in SP-INT REAL Consigna
4.0 in PV_PER WORD Valor real de periferia
6.0 in RED-FAC INT Factor de reducción de llamada
8.0 in COM_RST BOOL Rearranque
10.0 in CYCLE TIME Tiempos de muestreo
14.0 out QPOS_P BOOL Señal manipulada
16.0 stat DI_CONT_C FB-CONT_C Contador
142.0 stat DI_PULSEGEN FB_PULSEGEN Contador
176.0 stat sCount INT Contador
0.0 temp tCycCtr TIME Tiempo de muestreo del regulador

162
7: Regulación PID

163
7: Regulación PID

RESUMEN

Las interfaces específicas facilitan la adaptación del autómata a procesos que manejan
señales particulares, bien por la forma en que se presentan (impulsos, códigos binarios,
analógicos de bajo valor, etc.), bien por el control que se ejerce sobre ellas (regulación
PID, control numérico, etc.).


En general, las interfaces tratan además de canalizar señales específicas, de descarga a
la CPU principal del trabajo de interpretación y ejecución de sus programas asociados.


Precisamente, la potencia del tratamiento incorporado en la tarjeta permite su
clasificación en:

■■ Entradas/salidas específicas: sin tratamiento inteligente de la señal, que es únicamente


manipulada o transformada entre el autómata y el proceso: comparadores,
contadores rápidos, etc.
■■ Entradas/salidas inteligentes: con control elemental incorporado, que permite
establecer lazos de regulación ON/OFF utilizando señales binarias propias de la
tarjeta, que resultan modificadas por los resultados del tratamiento de los datos:
acopladores/comparadores analógicos, lecturas de recorrido y posicionamiento, etc.
■■ Procesadores periféricos inteligentes: con programas dedicados incorporados en su
memoria y parametrizados por el usuario para que la tarjeta funcione con sus propias
entradas y salidas binarias y analógicas, de forma autónoma a la CPU: reguladores
PID, procesadores de posicionamiento de ejes, etc.
■■ Utilizando las interfaces específicas, que incorporan el concepto de especialización
en el autómata, los problemas de control industrial, desaparecen o se atenúan
significativamente, y se abren nuevas vías de aplicación para estas máquinas.

165
8
Autómatas programables avanzado
8
DIDÁCTICA
UNIDAD

8.  PROFIBUS (Configuración en Siemens)


8: PROFIBUS (Configuración en Siemens)

ÍNDICE
OBJETIVOS................................................................................................................................................................ 171
INTRODUCCIÓN....................................................................................................................................................... 172
8.1.  Conceptos fundamentales.................................................................................................................................. 173
8.2.  Clasificación de las redes................................................................................................................................... 175
8.3.  Características generales de una red PROFIBUS.............................................................................................. 177
8.3.1.  Paso de testigo (TOKEN BUS)............................................................................................................................... 177
8.3.2. Maestro-esclavo................................................................................................................................................. 179
8.4. PROFIBUS-DP...................................................................................................................................................... 180
8.4.1.  Periferia distribuida a través del puerto integrado de la CPU....................................................................................... 181
8.4.2.  Coherencia de datos ............................................................................................... 185
8.4.3.  Comandos SYNC y Freeze ................................................................................................................................... 188
8.4.4.  Periferia distribuida a través de una CP .................................................................................................................. 192
8.4.5.  Inteligencia distribuida entre CPU’s......................................................................................................................... 196
8.4.6. Routing.............................................................................................................................................................. 202
8.4.7.  PG Bus.............................................................................................................................................................. 208
8.4.8.  Configuración de parámetros en una red PROFIBUS................................................................................................. 209
8.5.  Profibus FDL (Send/Receive).............................................................................................................................. 212
8.6.  Protocolo S7........................................................................................................................................................ 221
8.7.  Protocolo FMS..................................................................................................................................................... 225
RESUMEN................................................................................................................................................................... 231

169
8: PROFIBUS (Configuración en Siemens)

OBJETIVOS
■ Analizar el porqué de las comunicaciones industriales.

■ Clasificar los distintos protocolos de comunicación industrial existentes.


Analizar las características de los distintos protocolos de comunicación y saber cuál elegir
dependiendo del entorno industrial.


Conocer las principales características de un protocolo de comunicación industrial muy
utilizado en la industria y por autómatas de la marca Siemens denominado Profibus.


Conocer qué elementos, tanto software como hardware, son necesarios para realizar una
comunicación Profibus.


Conocer qué módulos software parametrizables son necesarios configurar, para realizar
una comunicación Profibus.

171
Autómatas programables avanzado

INTRODUCCIÓN

La integración de los autómatas en un proceso ■■ Nivel de LAN. Éste es el nivel jerárquicamente por encima
industrial, suele hacerse dividiendo las tareas entre del anterior y se encarga normalmente de enlazar las
grupos de autómatas jerárquicamente anidados. distintas “células de fabricación” en grupos más grandes.
Esto da lugar a una estructura de las redes industriales A este nivel se suelen encontrar los autómatas de gama
en las que se pueden distinguir claramente tres niveles: alta y los ordenadores de uso específico a las tareas de
diseño, control de calidad, etc.
■■ Nivel de bus de campo. Éste es el nivel de red más próximo
al proceso y se encarga de la integración de pequeños ■■ Nivel LAN/WAN. Este nivel es el más próximo al área de
automatismos (autómatas compactos, multiplexores de gestión y se encarga de integrar los niveles anteriores a
E/S, controladores PID, equipos de medida, etc.) en las una estructura de fábrica o incluso de múltiples factorías
llamadas “islas”, que controlan distintas parcelas de un con emplazamientos dispersos. Las máquinas que forman
proceso. Generalmente, en el nivel más alto de estas redes parte de este nivel suelen ser miniordenadores o redes
se suelen encontrar uno o varios autómatas modulares de de ordenadores compartiendo recursos e incorporando
gama alta, que pueden actuar como maestro de red o en bases de datos que permiten centralizar los servicios de
estructuras de maestro flotante. El conjunto constituye lo compras, control de stocks, ventas, control de costos,
que se suele llamar una “célula de fabricación”. etc.

172
8: PROFIBUS (Configuración en Siemens)

8.1.  Conceptos fundamentales


En este apartado presentamos y explicamos varios conceptos necesarios, como son
la comunicación, equipo, subred y red, a la hora de realizar una configuración.

Comunicación:
Transferencia de datos entre dos interlocutores con diferentes prestaciones
y el control de un interlocutor por otro, además de la consulta o interroga-
ción del estado operativo del interlocutor.

■■ La comunicación puede establecerse mediante diferentes vías:

• A través del puerto de comunicación integrado en la CPU.

• A través de un procesador de comunicaciones (CP) aparte.

• A través del bus de fondo (Bus-K que recorre el bastidor).

Equipo
En este contexto se denomina equipo a una unidad, que puede ser un au-
tómata programable, PG, panel operador/sistema, PC, aparato ajeno, etc.,
conectable a una o varias subredes.

173
Autómatas programables avanzado

Subred
Conjunto de todos los componentes físicos necesarios para establecer una
vía de transmisión de datos, así como el respectivo procedimiento común
para el intercambio de datos.
Ejemplos de subredes: MPI, PROFIBUS, Industrial Ethernet

Red
Conjunto formado por una o varias subredes iguales o diferentes, interco-
nectadas.

174
8: PROFIBUS (Configuración en Siemens)

8.2.  Clasificación de las redes


Para adaptarse a los diferentes requisitos de automatización, SIMATIC ofrece distintas
redes de comunicación:

1. Industrial Ethernet.

2. PROFIBUS / MPI.

3. Interface AS-i.

Existen cuatro niveles de automatización:

Nivel de control central


En este nivel se procesan tareas generales que conciernen a toda la empresa (funciones
de gestión). Entre ellas figuran la memorización de valores del proceso y funciones de
procesamiento para optimizar y como analizador, así como su presentación en forma
de listados. Los datos necesarios se recolectan y procesan para toda la empresa, con
independencia del lugar de emplazamiento, y desde el nivel de control central puede
accederse igualmente a otros niveles.

La cantidad de estaciones puede ser superior a 1.000.

175
Autómatas programables avanzado

Nivel de célula
En el nivel de célula se procesan autónomamente todas las tareas de automatización
y optimización. En este nivel están interconectados los autómatas, PC’s y los equipos
para el funcionamiento y la observación.

Nivel de campo
El nivel de campo es el nexo entre las instalaciones y los autómatas programables. Los
dispositivos de campo miden, señalizan y retransmiten a las instalaciones las órdenes
recibidas del nivel de célula. En general, se transmiten pequeñas cantidades de datos,
en este caso es típica una comunicación jerarquizada, es decir, varios dispositivos de
campo se comunican con un maestro.

Nivel de actuadores-sensores
En este nivel, un maestro se comunica con los actuadores y sensores conectados a
su subred.

Son característicos aquí tiempos de respuesta rápidos y un número reducido de bits


de datos.

AS-i PROFIBUS ETHERNET


Norma IEC-TG-17B En 50170 IEEE 802-3
Velocidad de 167 Kbits/seg 9,6 Kbits/sg ÷12 10 Mb/seg ÷ 100Mb/seg
transmisión
Mb/seg
Nº de equipos 1 Maestro 127 estaciones 1024 estaciones

31 Esclavos (32 activas)


Medio físico Cable 2 hilos 2 hilos apatallado, o Fibra Cable coaxial o par trenzado
óptica de vidrio o plástico industrial (ITP) o fibra óptica de
(Cable amarillo) (Cable morado) vidrio (Cable verde)
Extensión de la red 100m 10 km apróx. (medio eléctri- Depende de muchos factores
co) 100 km (fibra óptica)
(300 m con repetidores)
Método de acceso al Maestro/Esclavo Profibus DP: Maestro/Esclavo CSMA/CD
bus (Protocolo)
FDL: Paso de testigo

176
8: PROFIBUS (Configuración en Siemens)

8.3.  Características generales de una red PROFIBUS


PROFIBUS es la red para los niveles de célula y campo y se utiliza para transmitir
cantidades de datos desde pequeñas hasta medias. Físicamente, PROFIBUS es una
red eléctrica que puede ser:

■■ Cable a dos hilos apantallado.

■■ Red de fibra óptica.

■■ Red de transmisión inalámbrica mediante infrarrojos.

Velocidad de la red: desde 9,6 Kbit/s a 12 Mbit/s.

Podemos conectar a la red un máximo de 127 estaciones, y de éstas no puede haber


más de 32 estaciones activas.

Para una red PROFIBUS dispongo de varios servicios de comunicación:

■■ Comunicación con PG/OP.

■■ Protocolo S7.

■■ Comunicación con equipos S5 (FDL).

■■ Comunicación estándar (FMS).

■■ DP periferia descentralizada.

Hay dos métodos de acceso a la red, según queramos acceder a estaciones activas
(método de paso de testigo), o a estaciones pasivas (método maestro-esclavo).

8.3.1.  Paso de testigo (TOKEN BUS)


Las estaciones activas del bus conectadas a PROFIBUS constituyen un anillo lógico
de paso de testigo en orden numérico ascendente según su dirección de PROFIBUS.

Este orden lógico es independiente de la disposición física de las estaciones.

Por anillo paso de testigo se entiende una organización de estaciones (maestros) en la


que se pasa un testigo siempre de una estación a la próxima.

177
Autómatas programables avanzado

El testigo confiere el derecho a transmitir información por la red. Dicho testigo se


retransmite entre las estaciones del bus activas a través de un telegrama de testigo
especial.

Cuando una estación tiene el testigo, puede enviar telegramas mientras dure el
denominado tiempo de retención del testigo (configuración).

Una vez transcurrido éste, la estación ya sólo puede enviar un mensaje de alta prioridad.
Si una estación no tiene ningún mensaje que enviar, pasa el testigo directamente a
la siguiente estación en el anillo lógico. De esto se exceptúa la estación activa con
la dirección más alta existente en el bus, también denominada HSA (Highest Station
Address); dicha estación pasa el testigo exclusivamente a la estación del bus activa
con la mínima dirección de bus, para que se cierre nuevamente el anillo de paso de
testigo lógico.

Este método de acceso es independiente del tipo de red física PROFIBUS utilizada.

178
8: PROFIBUS (Configuración en Siemens)

8.3.2.  Maestro-esclavo
Si un anillo lógico consta de una sola estación activa y en el bus hay varias estaciones
pasivas, esto es un sistema Maestro-Esclavo.

El método maestro-esclavo permite al maestro (estación activa) que posee entonces el


derecho de emisión (tiene el testigo) tener acceso a los esclavos (estaciones pasivas)
que tiene asignados.

Entonces, el maestro tiene la posibilidad de enviar mensajes a los esclavos o de recibir


los procedentes de éstos.

La configuración de PROFIBUS-DP estándar se basa en este método de acceso al


bus. Una estación activa (maestro DP) intercambia datos de forma cíclica con las
estaciones pasivas (esclavos DP).

179
Autómatas programables avanzado

8.4.  PROFIBUS-DP
PROFIBUS-DP cumple los elevados requisitos de tiempo que se imponen para el
intercambio de datos en el sector de la periferia descentralizada y los dispositivos de
campo.

La configuración DP típica tiene una estructura con un único maestro. La comunicación


entre el maestro DP y el esclavo DP se efectúa según el principio maestro-esclavo.

El maestro dirige todo el tráfico de datos en el bus, esto significa que los esclavos DP
sólo pueden actuar en el bus tras solicitarlo el maestro. A tal efecto, los esclavos DP
son activados sucesivamente por el maestro conforme a una lista de llamadas (lista
de sondeo).

Entre el maestro DP y el esclavo DP se intercambian los datos útiles continuamente


(de forma cíclica), sin tener en consideración su contenido. A la periferia (la unidad
ET 200) conectada a PROFIBUS como esclavo DP se accede como a cualquier otra
unidad periférica situada en el módulo central o de ampliación. Es decir, es posible
acceder a los módulos periféricos directamente mediante instrucciones o durante la
actualización de la imagen del proceso.

Se puede hacer de 2 formas:

■■ A través de una CPU con puerto integrado.


■■ Mediante tarjeta de comunicaciones CP o un módulo interface IM.
Velocidad: 12MBd, o si los esclavos no lo permiten, 1,5 MBd.

A un maestro DP (p.ej. CPU) es posible conectar un máx. de 125 estaciones esclavas


PROFIBUS DP (según el CPU utilizado).

Requisitos hardware:

■■ S7-200: sólo puede ser esclavo de una red DP.

■■ S7-300 :

□□ CPU: 31X-2DP. Puertos: 1 MPI y 1 DP integrado. Por defecto está configurado


como maestro, pero puede ser esclavo.

□□ Excepto: 318-2DP que sólo puede ser maestro.

□□ CP 342-5.

■■ S7-400:

□□ CPU: 41X-DP (Sólo maestro). Si fuese 3DP: 1 puerto MPI, 1 puerto DP, 1
puerto configurable como MPI/DP.

□□ IM467: Módulo interface equivalente a un puerto DP. Sólo maestro.

□□ CP 443-5 Extended. Sólo Maestro.

180
8: PROFIBUS (Configuración en Siemens)

8.4.1.  Periferia distribuida a través del puerto integrado de la


CPU
En esta configuración, se intercambian los datos entre el maestro DP y esclavos DP
sencillos (módulos de E/S), a través del maestro DP.

El maestro DP explora sucesivamente cada esclavo DP configurado en su lista de


llamadas (lista de sondeo) dentro del sistema maestro DP, transmitiendo los datos de
salida o recibiendo de vuelta sus valores de entrada.

Las direcciones E/S son asignadas automáticamente por el sistema de configuración.


Esta configuración se denomina también sistema monomaestro, porque aquí
hay conectados un solo maestro DP con sus respectivos esclavos DP a una red
PROFIBUS-DP.

Cuando configuremos la red de este modo, las entradas y salidas de las ET’s las verá
el maestro como propias, accediendo a ellas con las instrucciones normales de S7.

■■ Configuramos el HW de nuestro equipo que será el maestro DP.

■■ Configuramos el sistema maestro DP :

181
Autómatas programables avanzado

Configuramos las propiedades del maestro DP (doble clic sobre “Maestro DP”).

En la pestaña “General” configurar la red y en Interface pulsar sobre botón


Propiedades”.

Asignarle una dirección de PROFIBUS y crear una red nueva. En la pestaña


“Ajustes de red” de la nueva red, ajustar la velocidad de transferencia y seleccionar
como perfil el DP.

182
8: PROFIBUS (Configuración en Siemens)

Ya tendremos nuestro sistema maestro DP del que colgarán los esclavos:

183
Autómatas programables avanzado

■■ Para insertar la ET a la red, la seleccionamos en el catálogo de hardware:

Seleccionamos el Sist. Maestro y hacemos doble clic sobre la ET, o simplemente


arrastrar la ET hasta el Sist. Maestro. Entonces habrá que indicarle la dirección
PROFIBUS.

Esa dirección será la que le habré puesto a la ET mecánicamente. Atención: cuando


cambiamos la dirección mecánicamente en la ET, y ya esta alimentada, no la detecta,
de modo que hay que realimentarla: quitarle y ponerle alimentación porque de nuevo
la ET se alimenta externamente.

184
8: PROFIBUS (Configuración en Siemens)

Por fin tendremos nuestra red configurada:

“Guardamos y compilamos” y “Cargamos en módulo”.

A partir de ahora las entradas y salidas de la ET formarán parte de la PAE y PAA del
maestro. Podemos cambiar el direccionamiento de la ET haciendo doble clic en la
vista detallada del HW:

Si meto una dirección mayor que 128, no podré acceder a esas entradas/salidas
como parte de la PAE o PAA, sino como periferia.

Programa
U E2.0 //Consulta una de las entradas de la ET
= A4.0 //y asigna a la salida de mi maestro

U E0.0 //Consulta una entrada de mi maestro


= A0.0 //y asigna a una salida de la ET

8.4.2.  Coherencia de datos


No hay problema si queremos enviar o recibir paquetes de datos a través de PROFIBUS
tamaño byte, palabra o doble palabra.

Podemos utilizar las instrucciones de carga (L) y transferencia (T). El problema es si


queremos enviar tres bytes o más de 4 bytes a un esclavo que precisa de ellos en un
único paquete de datos.

185
Autómatas programables avanzado

El PROFIBUS DP tiene su propio ciclo de bus en el que lee de la periferia, si le


mandamos ahora unos bytes y luego otros, no se los mandamos sincronizados.

Hay dos tipos de coherencia:

□□ Unidad: una unidad a nivel de byte o palabra.

□□ Total: paquete de datos direccionado en su totalidad.

Una solución es meter estos datos en la PAA (bytes 0 a 127).

La zona de PAA se escribe en la periferia de salida al final de cada ciclo, donde puede
ser leída en su totalidad por PROFIBUS.

Aut Para mandar 8 bytes:


L PAW100
L PAW102

Otra solución es utilizar las funciones SFC14 y SFC15 para leer y escribir datos con
coherencia.

186
8: PROFIBUS (Configuración en Siemens)

SFC 14 “DPRD_DAT”: permite leer datos coherentes de un esclavo DP. Su longitud


tiene que ser de tres o más de cuatro bytes y la longitud máxima depende de la CPU.

CALL SFC14
LADDR:=
RET_VAL:=
RECORD:=

Parámetros de entrada
LADDR (WORD): dirección inicial configurada desde el área de E del módulo esclavo,
de donde debe ser leída. Debe tener la misma longitud que la que se ha configurado
con STEP 7 para el módulo seleccionado. La dirección se debe indicar en valores
hexadecimales, p. ej., para la dirección inicial 100 es:

 LADDR:=W#16#64.

Parámetros de salida
RET_VAL (INT): si durante la ejecución de la función ocurre un error, este valor de
retorno contiene un código de error. Se permite E, A, M, D, L.

RECORD (ANY): área de destino para los datos leídos. Se permite E, A, M, D, L. El


tipo de datos ANY es un área de memoria indicada con un puntero que es la dirección
inicial de BYTE más la longitud en número de BYTES.

P#DB1.DBX0.0 BYTE 10 //Señala el área de datos de DB1 (DB0...DB9)

P#A0.0 BYTE 5 //Apunta al área de memoria de salidas (AB0...AB4)

Por ejemplo, si tienes una ET de 64 salidas digitales con dirección inicial 200:

CALL SFC14
LADDR:=W#16#C8 //Dirección inicial de las salidas de la ET (en la PAE o
PEW)
RET_VAL:=MW100
RECORD:=P#DB1.DBX0.0 BYTE 8 //Guarda esas salidas en un DB.
SFC 15 “DPWR_DAT”: Permite transferir los datos a RECORD de forma coherente con
respecto al esclavo DP.

CALL SFC15
LADDR:=
RECORD:=
RET_VAL:=

187
Autómatas programables avanzado

Parámetros de entrada
■■ LADDR (WORD): dirección inicial configurada desde el área PAA del módulo en
el que debe escribirse. La dirección se debe indicar en valores hexadecimales,
p. ej., para la dirección inicial 100 es:

LADDR:=W#16#64.

■■ RECORD (ANY): área de donde recojo los datos útiles a escribir. Debe tener
la misma longitud que la que se ha configurado con STEP 7 para el esclavo
seleccionado. Sólo se admite el tipo de datos BYTE.

Parámetros de salida
■■ RET_VAL (INT): si durante la ejecución de la función ocurre un error, este valor
de retorno contiene un código de error. Se permite E, A, M, D, L.

Por ejemplo, si tengo una ET de 64 entradas digitales con dirección inicial 200:

CALL SFC15

LADDR:=W#16#C8 //Dirección inicial de las entradas de la ET (en la PAA


o PAW)

RECORD:=P#DB1.DBX0.0 BYTE 8 //De donde coges los datos para


enviar a la ET

RET_VAL:=MW100

8.4.3.  Comandos SYNC y Freeze


Nos centauros en estos dos tipos de comandos SYNC y FREEZE y en explicar para
qué sirven, cuales son sus características y cuándo usarlos.

8.4.3.1.  SYNC
Normalmente, el maestro DP transfiere los datos de salida cíclicamente (dentro del
ciclo del bus PROFIBUS DP) a las salidas de los esclavos DP.

Cuando se quiera que determinados datos de salida (que puedan estar repartidos
entre varios esclavos) sean emitidos al proceso exactamente en el mismo instante, se
debe enviar el comando de control SYNC al correspondiente maestro DP aplicando la
función SFC 11 “DPSYC_FR”.

Un ejemplo de esto podría ser arrancar una serie de motores en el mismo instante.

Funcionamiento de SYNC
Con el comando de control SYNC los esclavos DP de los grupos especificados
cambian al modo SYNC, esto es, el maestro DP transfiere los datos de salida actuales
y hace que los esclavos DP afectados congelen las salidas.

188
8: PROFIBUS (Configuración en Siemens)

En los sucesivos telegramas de respuesta, los esclavos DP guardan los datos de


salida en un búfer interno, de tal modo que los valores de las salidas no cambian.

Los esclavos DP de los grupos seleccionados depositan los datos de salida de su


búfer interno en las salidas del proceso cada vez que se da el comando SYNC.

Para que las salidas se vuelvan a actualizar cíclicamente es necesario dar el comando
UNSYNC con la SFC 11 “DPSYC_FR”.

189
Autómatas programables avanzado

Procedimientos
■■ Hay asignar los esclavos DP a grupos SYNC y FREEZE. En HW Config haz doble
clic sobre el sistema maestro DP, o botón derecho y selecciona “Propiedades
del objeto...”.

Por cada sistema maestro se pueden formar como máximo 8 grupos. Sin embargo, a
cada esclavo DP se le puede asignar solamente un grupo SYNC y un grupo FREEZE.

Activar SYNC y/o FREEZE para el grupo haciendo clic en la casilla de verificación
correspondiente.

190
8: PROFIBUS (Configuración en Siemens)

■■ Selecciona la ficha “Asignación de grupos” donde asignarás los esclavos DP a


grupos.

En el siguiente ejemplo tenemos 3 esclavos. Los dos primeros están asignados al


grupo 2; el grupo 2 tiene propiedad SYNC y FREEZE. El tercer esclavo pertenece al
grupo 5; el grupo 5 tiene propiedad SYNC, pero no FREEZE.

Se puede saber si el esclavo admite los comandos SYNC y FREEZE, pinchando sobre
él y leyendo la última línea.

Comando SYNC/FREEZE:

CALL “DPSYC_FR”
REQ:=
LADDR:=
GROUP:=
MODE:=
RET_VAL:=
BUSY:=

191
Autómatas programables avanzado

8.4.4.  Periferia distribuida a través de una CP

Ahora las E/S de las ET estarán almacenadas en un búfer de entradas o salidas que
se encuentra en la CP. El maestro para acceder a ellas tendrá que hacerlo mediante
dos funciones:

* FC1(DP_SEND).

* FC2 (DP_RECV).

 Configurar el hardware del maestro.

192
8: PROFIBUS (Configuración en Siemens)

■■ Configurar un sistema maestro DP en la CP:

Configuramos las propiedades de la CP (doble clic sobre la CP).

□□ En la pestaña general configurar la red “PROFIBUS”.

□□ Puedes cambiar el direccionamiento de las entradas/salidas de la CP en la


pestaña “Direcciones”.

Hay un buffer de entradas en la CP, donde se depositan los datos de la periferia.


Este buffer se puede leer mediante la función “DP_RECV”.

Hay un buffer de salidas en la CP, donde se depositan los datos que ha enviado
la CPU hacia la periferia. Este buffer se puede escribir mediante la función “DP_
SEND”.

En la pestaña “Modo de operación” activar la CP como “Maestro DP”

■■ Insertar la ET al sistema maestro DP:

■■ El acceso a las entradas salidas se hace mediante dos funciones que se


encuentran en el catálogo de “Elementos de programa”: Librerías - SIMATIC_
NET_CP.

193
Autómatas programables avanzado

FC1 “DP_SEND” : transfiere datos (E, M, DB) a la CP, o sea, transfiere los datos
de un área de salidas DP determinada al CP PROFIBUS para emitirlo a la periferia
descentralizada.

CALL “DP_SEND”
CPLADDR:=
SEND :=
DONE :=
ERROR :=
STATUS :=

Parámetros de entrada
■■ CPLADDR (WORD): dirección inicial de la CP. Al configurar el CP con la
herramienta de configuración STEP?7 se visualiza la dirección inicial del módulo
en la tabla de configuración, de modo que introduce aquí esta dirección en
hexadecimal. Ej.: W#16#130

■■ SEND (ANY): zona de memoria (A, M, DB) de la CPU a transferir a la CP. Se


indica la dirección inicial y la longitud.

Ej.: P#E0.0 byte 6 // 6 bytes será la cantidad de entradas totales en los esclavos.

Advertencia: la longitud de lo que envío al búfer de salida de la CP, debe coincidir


con el total de entradas que exista en la periferia. Ejemplo:

194
8: PROFIBUS (Configuración en Siemens)

En este ejemplo debería enviar 6 bytes.

Parámetros de salida
■■ DONE (BOOL): si está a 1, indica que se han aceptado nuevos datos.

■■ ERROR (BOOL): si está a 1, se ha producido error y el código de error se


indica en el parámetro STATUS.

■■ STATUS (WORD): código de estado.

FC1 “DP_RECV”: recibe datos a través del CP PROFIBUS, o sea, recibe los datos del
proceso de la periferia descentralizada al igual que una información de estado en un
área de entrada DP determinada.

CALL “DP_RECV”
CPLADDR :=
RECV :=
NDR :=
ERROR :=
STATUS :=
DPSTATUS:=

195
Autómatas programables avanzado

Parámetros de entrada
■■ CPLADDR (WORD): dirección inicial de la CP. Al configurar el CP con la
herramienta de configuración “HW Config” se visualiza la dirección inicial del
módulo en la tabla de configuración, de modo que aquí esta dirección en
hexadecimal. Ej.: W#16#130

■■ RECV (ANY): zona de memoria (A, M, DB) de la CPU donde deposito las entradas
leídas en la CP. Se indica la dirección inicial y la longitud.

Ej.: P#A4.0 byte 2 // 2 bytes será la cantidad de salidas totales en los esclavos.

La longitud de lo que recibo en el búfer de entradas de la CP, debe coincidir


con el total de salidas que existan en la periferia.

Parámetros de salida
■■ NDR (BOOL): si esta a 1, indica que se han aceptado nuevos datos.

■■ ERROR (BOOL): si esta a 1, se ha producido error y el código de error se indica


en el parámetro STATUS.

■■ STATUS (WORD): código de estado.

■■ DPSTATUS (BYTE): código de estado DP.

8.4.5.  Inteligencia distribuida entre CPU’s


Las tareas de automatización pueden desglosarse en tareas parciales, que son
controladas por un sistema de automatización de orden superior. Estas tareas parciales
de control, ejecutables de forma autónoma y eficiente, son procesadas previamente
en una CPU. Dicha CPU se puede establecer como esclavo DP inteligente.

En las configuraciones con esclavos DP inteligentes, como por ejemplo una CPU 315-
2DP, el maestro DP no accede a los módulos de E/S de la CPU esclava, sino sólo
a la zona de operandos de la CPU esclava; es decir, que dicha zona de operandos
no deberá ser ocupada para módulos E/S reales de la CPU esclava. Esta asignación
debe efectuarse durante la configuración del esclavo.

A tal efecto, el maestro DP puede direccionarse dentro de un sistema monomaestro,


con lo que los datos siguen intercambiándose según el principio maestro-esclavo (MS)
cíclico.

196
8: PROFIBUS (Configuración en Siemens)

Como CPU maestro podemos tener: S7-400 o S7-300.

Como CPU esclavo: S7-300 o S7-200.

Excepciones: la CPU318 y la 315-2AFF00 (es antigua) no pueden ser maestros.

■■ Configura el HW de la CPU esclavo, haz doble clic sobre el puerto DP integrado


y lo conectas a una red PROFIBUS DP, después en la pestaña “Modo de
operación” establece que la CPU debe operar como Esclavo (inteligente).

197
Autómatas programables avanzado

Activar la casilla “Programar y Observar/Forzar...” si vas a ejecutar funciones vía


PROFIBUSDP como programar (p. ej. cargar), test (observar/forzar) o comunicación a
través de enlaces no configurados (p. ej. con SFC 65, SFC 66)

■■ En el caso de un esclavo DP inteligente, el maestro DP no accede a las entradas


y salidas conectadas del esclavo, sino a un área de transferencia en el espacio
de direccionamiento de entradas/salidas de la CPU. Según esto se deberá
configurar unas áreas de E/S para el intercambio de datos entre el esclavo DP
inteligente y el maestro DP asignado. Lo harás en la pestaña “Configuración”,
eligiendo el modo Maestro/Esclavo “ME”.

El modo de Comunicación Directa “CD” es para el caso de comunicación entre


esclavos inteligentes. Ejemplo:

198
8: PROFIBUS (Configuración en Siemens)

Ejemplo de configuración de la tabla:

Se ha creado un área de entradas en la CPU Esclavo donde se recepcionarán los


datos que envíe el Maestro: E100 (periferia del esclavo) de longitud 2 bytes coherencia
total.

Los datos a transferir al maestro se depositan en el área de salidas 20 (PAA del esclavo)
de longitud 1 byte coherencia unidad.

■■ Ahora toca configurar el HW del equipo Maestro. Haciendo doble clic en el


puerto integrado, conectamos la CPU a la red PROFIBUS DP ya creada y en la
pestaña “Modo de operación” configura la CPU como “Maestro”.

Aceptamos y con el botón derecho sobre el puerto integrado selecciono: “Insertar


sistema maestro”:

Del sistema maestro DP deberá colgar la CPU Esclavo. Para ello vamos al Catalogo
de Hardware → Carpeta “PROFIBUS DP” → Carpeta “Estaciones ya configuradas” →
Y aquí seleccionamos la CPU correspondiente.

199
Autómatas programables avanzado

Nos saldrá la siguiente ventana, Pestaña “Acoplamiento”, donde aparecerán todos los
esclavos previamente configurados. Seleccionamos aquél que queremos insertar en
el sistema maestro DP y pinchamos en el botón “Acoplar”.

A continuación vamos a la pestaña “Configuración”, donde rellenamos la tabla para


establecer las áreas de intercambio de datos de entradas y salidas del equipo maestro:

En el ejemplo anterior hemos definido un área (búfer) de salidas de datos de dirección


200 que se enviarán al área de entradas del esclavo. Y asimismo definimos en el
maestro un área de entradas de datos donde se depositarán las salidas del esclavo.

200
8: PROFIBUS (Configuración en Siemens)

Por ejemplo: Queremos mandar datos del esclavo al maestro. Para ello enviamos los
datos al búfer de salida del esclavo mediante una transferencia T. Automáticamente
los datos depositados en el búfer de salida del esclavo se transfieren al búfer de
entrada del maestro, de donde pueden ser leídos mediante una carga L.

■■ Crearíamos los programas en el Maestro y el Esclavo. En nuestro ejemplo:

OB1 Maestro:

L MW77
T PAW200

L PEW30
T DB1.DBW0
OB1 Esclavo:
L DB5.DBWO
T PAW20

L PEW100
T MW34

201
Autómatas programables avanzado

Crear también el OB82 (OB de alarma de diagnóstico) y el OB86 (OB de fallo de la


periferia) para que las CPU’s no se vayan a STOP.

■■ Transferir el hardware y programas de los dos equipos.

8.4.6.  Routing
Se puede acceder a la red PROFIBUS a través de la red MPI. Se pueden hacer hasta
2 pasarelas.

Routing con módulos S7 a través de redes MPI, PROFIBUS y Ethernet Industrial.

Requisitos para la función de Routing de software y hardware y procedimiento de


configuración.

Requisitos de Software
Redes MPI y PROFIBUS:

■■ Al menos STEP7 V5.0+SP1, pero se recomienda STEP7 V5.0+SP3.

■■ Para las tarjetas Sofnet PROFIBUS (CP 5411 (ISA), CP 5511 (PCMCIA), CP
5611 (PCI), CP 5611 (on board) no se necesitan drivers adicionales, ya se
suministran con STEP7.

■■ Para las tarjetas Hardnet PROFIBUS (CP 5412(A2) (ISA), CP 5613/5614 (PCI))
son imprescindibles los drivers del SIMATIC NET CD de Noviembre del 99.

Redes Ethernet Industrial


■■ Para STEP7 V5.0+SP1 y SOFTNET IE [PG or S7] V3.1 para conexiones de
Ethernet Industrial también se recomienda STEP7 V5.0+SP3 y SOFTNET IE
[PG or S7] V3.2.

202
8: PROFIBUS (Configuración en Siemens)

■■ Para las tarjetas Softnet IE (CP 1411 (ISA), CP 1511 (PCMCIA), 3COM) son
indispensables los drivers que vienen en el CD SIMATIC NET de Noviembre 99.

■■ Para las tarjetas Hardnet-IE (CP 1413 (ISA), CP 1613 (PCI)) son indispensables
los drivers que vienen en el CD SIMATIC NET de Noviembre 99.

■■ Para implementar un TS Adapter:

TeleService S7 V5.0.

Requisitos de hardware
Se necesitan módulos compatibles con el routing. Acerca de los módulos que son
compatibles con el routing véase el catálogo de hardware de la configuración hardware
de STEP7.

Además se necesita una de las CP’s mencionadas más arriba en “Requisitos de


software” o el TS Adapter V5.0 o un a PC Adapter V5.0.

203
Autómatas programables avanzado

Observación
El último módulo para ser direccionado a través de las funciones de routing no tiene
que ser compatible con el routing.

Procedimiento de configuración
Todas las estaciones que están entre los dispositivos de inicio y final se deben
configurar en un único proyecto STEP7. Desde el configurar de redes NetPro:

■■ Añadir una estación del tipo “PG/PC”.

■■ Configurar todas las conexiones de red físicamente presentes (MPI, PROFIBUS,


Industrial Ethernet) en el NETPRO o en el HW Config.

Esto también se hará para las redes que no están directamente en el camino
de ruta, pero que están conectadas a las estaciones de ruta. Esto no significa
que se deban conectar a la red todos los interfaces disponibles. Sólo hay que
configurar las conexiones de comunicación que estén físicamente presentes.

204
8: PROFIBUS (Configuración en Siemens)

■■ Abrir las Propiedades de la estación “PG/PC” haciendo doble clic sobre el dibujo
de la PG/PC.

■■ Accede a la pestaña “Interfaces” y crea un nuevo interface (botón “Nuevo”).


Escoge el tipo de interface de la lista que se visualiza y confirma con “Aceptar”.

■■ En la ventana que se ha abierto escoge la red física a la que está conectada tu


PG/PC. Si todavía no has configurado una red, entonces deberás hacerlo ahora.

Advertencia:
La estación “PG/PC” tiene que tener la misma dirección que la que está
establecida en el programa “Ajustar interface PG/PC” (esto también es de
aplicación para la CP 1413 y CP 1613).

■■ Accede a la pestaña “Asignación” y asigna el punto de entrada de routing a tu


PG/PC.

Primero, en el “Interfaces configurados” escoge el usuario y luego en la segunda


ventana especifica la CP o el PC Adapter con el ID de la red asociada, a través de la
cual tú quieres acceder online.

205
Autómatas programables avanzado

■■ Guarda y compila la configuración de red.

■■ Carga la configuración en la CPU.

■■ Establece una conexión online a través del proyecto offline.

No se puede hacer esto a través de “Estaciones accesibles”.

206
8: PROFIBUS (Configuración en Siemens)

Configuraciones de ejemplo
Routing con módem y TS Adapter

207
Autómatas programables avanzado

Routing con ISDN Router

8.4.7.  PG Bus
Consiste en conectar la PG a la red PROFIBUS para acceder a los distintos equipos
existentes en dicha red.

■■ Configurar la red PROFIBUS entre los dos equipos.


■■ Cambiar el interface de la PG a PROFIBUS en “Ajustar interface PG/PC”. A la
PG asignarle la dirección PROFIBUS 0.
■■ El cable MPI de la PG se conecta al puerto integrado de la CPU o al puerto
de la CP.
■■ Ahora metiéndonos online en un proyecto podremos acceder a las todas CPU’s
de la red integrantes de la red PROFIBUS.

208
8: PROFIBUS (Configuración en Siemens)

Observaciones
■■ Si se hace PGBUS a través de las CP’s o si se hace el acceso online mediante
“Mostrar estaciones accesibles”, no se accederá al contenido de las CPU’s,
sino al de las CP’s.

■■ Recoger el hardware de los equipos a través de PROFIBUS no es demasiado


seguro, es aconsejable hacerlo a través del cable MPI.

8.4.8.  Configuración de parámetros en una red PROFIBUS


Podemos definir las propiedades de la red PROFIBUS.

■■ Dirección de PROFIBUS más alta (HSA – High Station Active Address ): Es la


dirección más alta de las estaciones activas de la red PROFIBUS. La dirección
más alta de PROFIBUS es necesaria para pasar el token o testigo, es decir,
para pasar el permiso de transmisión entre las estaciones activas. Sólo afecta
a las estaciones PROFIBUS activas, como por ejemplo un maestro DP. Por
consiguiente, los esclavos DP pasivos pueden tener asignadas direcciones
PROFIBUS de 1 a 125, aunque la dirección más alta se haya ajustado p. ej. a 15.

Podemos ajustar los parámetros de la red PROFIBUS:

Para poder cambiar estos parámetros deberemos elegir el perfil “Personalizado”.


Además, todos los parámetros de bus deberán ser iguales en todos los equipos de
la red.

209
Autómatas programables avanzado

GAP: es un telegrama de consulta a una estación. Este telegrama se envía a una


dirección PROFIBUS para ver si existe estación en esa dirección.

LAS (List of Active Stations): lista de las estaciones activas de la red generada cada X
ciclos.

Todos los parámetros vienen definidos en la unidad t_bit, que es el tiempo que se
tarda en transmitir un bit; este tiempo depende de la velocidad de la red.

■■ Factor gap (0÷99): indica cada cuantos ciclos de bus se actualiza la LAS. Un
factor gap bajo tiene el inconveniente de que se pierde tiempo de bus al mandar
telegramas GAP, pero por el contrario la red es más dinámica ya que detecta con
rapidez la incorporación de nuevos equipos.

TSDR (Time Station Delay Response): tiempo de respuesta de una estación ante un
mensaje que se le envía. No existe un tiempo fijo, depende de la estación. Se define
un margen de respuesta: un TSDR mínimo y un TSDR máximo.

■■ Tsdr mín.: determina el tiempo que debe transcurrir como mínimo para que la
estación pueda responder.

■■ Tsdr máx.: determina el tiempo tras el cual tiene que haber respondido la estación.
Si el tiempo de respuesta supera al Tsdr máx. aún espera el tiempo Tslot, que
es el máximo tiempo que espera el emisor a que responda su estación. Si se
supera el Tslot, el emisor vuelve a enviar el telegrama tantas veces como indique
el parámetro Retry Limit.

210
8: PROFIBUS (Configuración en Siemens)

■■ Ttr: tiempo máximo de rotación del testigo. Establece el tiempo máximo para
que el testigo vuelva a una estación activa (maestro DP).

■■ Tset (tiempo de preparación): tiempo que transcurre entre la recepción de un


telegrama en una estación y la reacción de la dicha estación a ese telegrama.

211
Autómatas programables avanzado

8.5.  Profibus FDL (Send/Receive)


FDL (Fieldbus Data Link) ofrece servicios de funciones compatibles con S5 para
transmitir datos por la subred PROFIBUS. Esta transmisión de datos se hace
únicamente entre equipos inteligentes (CPU’s o PC’s). No es un protocolo estándar,
sólo se pueden comunicar equipos de Siemens.

SIMATIC S7 ofrece funciones de comunicación para emitir y recibir datos a través


de enlaces FDL, usando los bloques estándar de FDL: AG_SEND (FC5) y AG_RECV
(FC6) a través de la red PROFIBUS. De este modo se pueden mandar de una sola vez
240 bytes máx.

También podemos utilizar las funciones AGL_SEND (FC50) y AGL_RECV (FC60) con
las que podremos mandar 8 kbytes máximo.

La comunicación a través del interface SEND/RECEIVE se efectúa exclusivamente


mediante CP’s.

Requisitos de hardware
S7-300 :
●● CP 342-5 y CP343-5
S7-400:
●● CP 343-5 BASIC Y EXTENDED

Enlaces
Un enlace constituye la correspondencia lógica entre dos interlocutores para ejecutar
servicios de comunicación.

Cada enlace tiene dos puntos finales (situados en la respectiva CPU o CP), que
incluyen las informaciones necesarias para direccionar el interlocutor, así como otros
atributos para establecer el enlace.

212
8: PROFIBUS (Configuración en Siemens)

Los enlaces son bidireccionales, creamos uno para comunicar dos equipos.

Si tenemos n equipos, tendremos n-1 enlaces:

Recursos de enlace
Cada enlace precisa recursos en los equipos implicados para el punto final (por
ej. CPU) o para el punto de transición (p.ej. CP). El número de recursos de enlace
depende del tipo de CPU/CP. Si están ocupados todos los recursos de enlace de un
interlocutor no puede establecerse ningún nuevo enlace.

213
Autómatas programables avanzado

Tipos de enlaces

Enlaces
Tipo de enlace Configurado no configurado

(vía tabla de enlaces)


Establecimiento/ disolución del Estático dinámico (sólo dinámico
enlace
en M7-300/400)

■■ Enlaces configurados: esta clase de enlace se configura mediante STEP 7 (en


la Tabla de Enlaces). Se asigna a cada extremo de enlace un ID local; el cual se
precisa para parametrizar las funciones de comunicación. El ID local referencia un
área de datos que contiene, entre otros, las informaciones de dirección propias
y las del interlocutor. Estos enlaces requieren recursos de la CPU. Ejemplo:
enlaces FMS Y FDL.

■■ Enlaces no configurados: por regla general, este tipo de enlaces no se


configuran en STEP 7 a través de la Tabla de enlaces. Dichos enlaces se
especifican sólo mediante la dirección de destino y se establecen implícitamente
al solicitar la función de comunicación, disolviéndose eventualmente tras acabar
la transmisión de los datos. Ejemplo: enlaces S7.

■■ Estático: se utilizan enlaces estáticos cuando al configurar una instalación hay


suficientes recursos de enlaces disponibles en los diferentes equipos y no es
necesario liberar ninguno.

■■ Por otro lado, al planificar no es necesario considerar el establecimiento


y disolución del enlace, de tiempo crítico. Una vez establecidos, los enlaces
estáticos permanecen de forma duradera.

■■ Dinámico: los enlaces dinámicos se utilizan para intercambiar sucesivamente


datos con diferentes interlocutores o para aprovechar con más efectividad los
recursos de enlace disponibles. El establecimiento y disolución propiamente
dicho del enlace no se efectúa al arrancar el equipo, sino sólo cuando lo solicita
explícitamente la aplicación desde el programa.

El enlace FDL es configurado y estático. El número de enlaces máximo es de 16.

Pasos para configurar una red FDL


1. Configura el hardware de los equipos a comunicar. Y en el NetPro configura la
red PROFIBUS.

214
8: PROFIBUS (Configuración en Siemens)

Debes conectar las CP’s a una red PROFIBUS y el perfil de la red debe ser
“Estándar”.

2. El segundo paso es configurar los enlaces. Los enlaces se configuran en la


CPU. Haciendo clic sobre una CPU aparecerá la Tabla de enlaces, y haciendo
clic sobre la primera línea y botón derecho del ratón, “Insertar nuevo enlace”.

Seleccionar el equipo y módulo interlocutor. Como tipo de enlace seleccionar


“FDL”:

215
Autómatas programables avanzado

Activar “Visualizar diálogo de propiedades” para que al pulsar “Aceptar” aparezca


la ventana de propiedades del enlace:

■■ ID local: se trata del ID del enlace FDL (máx. 16 enlaces).

■■ Nombre del enlace: nombre asignado al enlace. Identifica al enlace FDL.

Parámetros de bloque:

216
8: PROFIBUS (Configuración en Siemens)

□□ ID: número de ID local.

□□ LADDR: dirección inicial del módulo (de la CP) en hexadecimal. La dirección


es la del HW Config.

3. Programación:

La comunicación se realiza a través de la CP, pero los datos los envías o recibes
desde la CPU mediante las funciones FC5 “AG_SEND” y FC6 “AG_RECV”.

Estas funciones están en ‘Elementos de programa’ - “Librerías” - “SIMATIC_


NET_CP” - “CP300” o “CP400”.

217
Autómatas programables avanzado

Ejemplo: voy a mandar datos del Equipo 1 y recibirlos por el Equipo 2.

OB1 Equipo 1:
CALL “AG_SEND”
ACT :=
ID :=
LADDR :=
SEND :=
LEN :=
DONE :=
ERROR :=
STATUS:=
Parámetros de entrada:
□□ ACT (BOOL: si ACT = 1 se envían los bytes.

Si ACT = 0 se actualizan los códigos de condición de estado DONE,

ERROR y STAT.

□□ ID (INT): número del enlace FDL (1÷16) por el que voy a enviar.

□□ LADDR (WORD : dirección inicial de la CP por la que voy a enviar.

Al configurar el CP con la herramienta de configuración “HW Config” se


visualiza la dirección inicial del módulo en la tabla de configuración. Introduzca
aquí esta dirección en hexadecimal.

Ej.: W#16#130

□□ SEND (ANY): dirección y longitud de los datos que voy a enviar.

El área de datos puede ser la PAE, PAA, marcas o bloques de datos.

P#E0.0 BYTE 2 //Mandaría EB0 y EB1

P#DB1.DBX0.0 BYTE 40 //Mandaría los primeros 40 bytes del DB1.

□□ LEN (INT): número de bytes (1 hasta 240 máx.) que enviaras del área de datos
indicada en el parámetro SEND. Este número debe ser menor que la longitud
de datos indicada con SEND.

Parámetros de salida
□□ DONE (BOOL): si DONE=1, significa que la petición de envío ha terminado
con o sin errores.

□□ ERROR (BOOL): si ERROR=1, se ha producido un error

218
8: PROFIBUS (Configuración en Siemens)

□□ STATUS (WORD): código de estado.

Envío terminado sin error: DONE=1, ERROR=0 y STATUS=0000

En nuestro ejemplo:

CALL “AG_SEND”
ACT := 1
ID := 1
LADDR := W#16#100
SEND := P#E0.0 BYTE 2
LEN := 2
DONE := M0.0
ERROR := M0.1
STATUS:= MW2
OB1 Equipo 2:

Recogerás los datos mediante la función FC6 “AG_RECV”. No hay que activar
la recepción siempre estarás alerta para recibir los datos.

CALL “AG_RECV”
ID :=
LADDR :=
RECV :=
NDR :=
ERROR :=
STATUS:=
LEN :=

Parámetros de entrada
■■ ID (INT): indica el número del enlace FDL (1÷16).

■■ LADDR (WORD): dirección inicial de la CP por la que recibo, en hexadecimal.

■■ RECV (ANY): área de memoria donde se almacena los datos que recibo. El área
de datos puede ser la PAE, PAA, marcas o bloques de datos.

Parámetros de salida
■■ LEN (INT): indica el número de bytes (1÷240) que han sido recibidos por la CP
en el área de datos FDL.

■■ NDR (BOOL): si NDR=1, indica si se aceptaron nuevos datos.

219
Autómatas programables avanzado

■■ ERROR (BOOL): si ERROR=1, se ha producido un error.

■■ STATUS (WORD): código de estado.

En nuestro ejemplo:

CALL “AG_RECV
ID := 1
LADDR := W#16#100
RECV := P#A4.0 BYTE 2
NDR := M0.0
ERROR := M0.1
STATUS:= MW2
LEN := MW4

220
8: PROFIBUS (Configuración en Siemens)

8.6.  Protocolo S7
Cada CPU S7 lleva integrada una serie de funciones S7 (SFB’s y SFC’s) para la
transferencia de datos entre ellas. Estas funciones son independientes del tipo de red,
pueden utilizarse para MPI, PROFIBUS e Ethernet.

Gracias a la repetición automática de los telegramas incompletos o erróneos en


PROFIBUS y MPI, se consigue una elevada seguridad de los datos.

Tipos:

Comunicación a través de la red mpi (enlaces no configurados)


Se usan unas SFC’s para comunicaciones a través de enlaces S7 no configurados.
Los enlaces hacia los interlocutores se establecen dinámicamente al solicitar la SFC
y por ello se requiere en cada interlocutor un recurso de enlace libre. Máx. 76 bytes.

Función SFC68 “X_PUT”: esta SFC permite a una CPU escribir datos en otra CPU sin
que ésta última deba tener ninguna SFC, ya que esta funcionalidad la realiza el sistema
operativo.

CALL “X_PUT”
REQ :=
CONT :=
DEST_ID:=
VAR_ADDR:=
SD :=
RET_VAL :=
BUSY :=
Parámetros de entrada:

■■ REQ (BOOL): la escritura de datos se activa llamando la SFC con REQ=1 (cambio
de nivel). Si no existe enlace, se crea antes de enviar los datos, a continuación
se llama repetidamente a la SFC hasta que se señalice, con BUSY=0, que la
escritura de datos ha finalizado. Si se vuelve a llamar a la función con REQ=1 y
todavía no se han enviado los datos, está nueva petición se desestima.

■■ CONT (BOOL): si CONT=0 en la primera llamada, el enlace se rompe después


de enviar los datos. Con esto aseguramos ocupar sólo los recursos de enlaces
que son actualmente necesarios.

■■ Si CONT=1 en la primera llamada, el enlace permanece tras finalizar la


transferencia de los datos. Esto lo utilizarás para el intercambio de datos cíclicos
entre dos estaciones. De todos modos, para romper el enlace dispones de la
función SFC 69 “X_ABORT”.

221
Autómatas programables avanzado

■■ DEST_ID (WORD): contiene la dirección MPI de la CPU donde se va a escribir.

■■ VAR_ADDR (ANY): indica el área de datos de la CPU donde se va escribir. Es


necesario elegir un tipo de datos soportado por el CPU receptora.

■■ SD (ANY): indica el área de datos de la CPU emisora que se van a enviar.


Se permiten los tipos de datos siguientes: BOOL, BYTE, CHAR, WORD, INT,
DWORD, DINT, REAL, DATE, TOD, TIME, S5_TIME, DATE_AND_TIME, así como
arrays de los tipos de datos mencionados con excepción de BOOL.

Hay que tener en cuenta que la longitud del área de datos y el tipo de datos de la CPU
emisora deben coincidir con que la longitud del área de datos y el tipo de datos de la
CPU receptora.

Parámetros de salida:

■■ RET_VAL (INT): si durante la ejecución de la función aparece un error, este valor


de retorno incluye su código de error asociado.

■■ BUSY (BOOL):

BUSY=1: la emisión aún no ha finalizado.

BUSY=0: la emisión ha finalizado o no hay ninguna emisión activa.

Si la CPU que envía los datos pasa a STOP, se rompe el enlace.

Si la CPU donde se escriben los datos pasa a STOP, no pasa nada ya que los
datos emitidos (que estarán en un búfer) se escriben de todos modos.

Función SFC67 “X_GET”: esta SFC permite a una CPU leer datos de otra CPU
sin que ésta última deba tener ninguna SFC, ya que esta funcionalidad la realiza
el sistema operativo.

CALL “X_GET”
REQ :=
CONT :=
DEST_ID :=
VAR_ADDR:=
RET_VAL :=
BUSY :=
RD :=
■■ REQ (BOOL): la lectura de datos se activa llamando la SFC con REQ=1. Si no
existe enlace, se crea.

■■ CONT (BOOL): si CONT=0 en la primera llamada, el enlace se rompe después


de leer los datos. Con esto aseguramos ocupar sólo los recursos de enlaces
que son actualmente necesarios.

222
8: PROFIBUS (Configuración en Siemens)

■■ Si CONT=1 en la primera llamada, el enlace permanece tras finalizar la lectura


de los datos. Esto lo utilizaré para el intercambio de datos cíclicos entre dos
estaciones. De todos modos, para romper el enlace dispongo de la función SFC
74 “I_ABORT”.

■■ DEST_ID (WORD): contiene la dirección MPI de la CPU de la que se va a leer.

■■ VAR_ADDR (ANY): indica el área de datos de la CPU de donde se va a leer. Es


necesario elegir un tipo de datos soportado por el CPU receptora.

Parámetros de salida:

■■ RET_VAL (INT): si durante la ejecución de la función aparece un error, este valor


de retorno incluye su código de error asociado. Si no aparece ningún error, RET_
VAL incluye la longitud en bytes del paquete de datos que se ha leído.

■■ BUSY (BOOL):

BUSY=1: la recepción aún no ha finalizado.

BUSY=0: la recepción ha finalizado o no hay ninguna emisión activa.

■■ RD (ANY): indica el área de datos de la CPU receptora donde se van a


almacenar los datos leídos. Se permiten los tipos de datos siguientes: BOOL,
BYTE, CHAR, WORD, INT, DWORD, DINT, REAL, DATE, TOD, TIME, S5_TIME,
DATE_AND_TIME, así como arrays de los tipos de datos mencionados con
excepción de BOOL.

Hay que tener en cuenta que la longitud del área de datos y el tipo de datos de la CPU
receptora deben coincidir con que la longitud del área de datos y el tipo de datos de
la CPU emisora.
Para que haya coherencia de datos en la recepción, el área de datos RD donde se
almacenan los datos recibidos se debe evaluar antes de hacer una nueva recepción
en esa área.
Si la CPU donde se escriben los datos recibidos pasa a STOP, se rompe el enlace.
Los datos recibidos se perderán o no según el tipo de rearranque: Si “Rearranque”
(no en los S7-300), no se pierden los datos, se escriben en el área RD. Si “Rearranque
completo (caliente)” o “Rearranque frío”, se pierden los datos.
Si la CPU de donde se leen los datos pasa a STOP, no pasa nada, los datos son leíbles
aún estando la CPU en STOP.

Enlaces configurados
Los SFB’s para comunicaciones permiten realizar una transmisión de datos acusada
vía enlaces S7 configurados. Dichos enlaces se crean con STEP 7.

Los SFB’s para comunicaciones sólo pueden aplicarse en los CPU’s de la familia S7-
400. Las funciones PUT/GET permiten leer o inscribir datos de un S7-300 desde un
S7-400. Estas funciones permiten transmitir datos hasta a 64 Kbytes vía las subredes
MPI, PROFIBUS e Industrial Ethernet.

223
Autómatas programables avanzado

La comunicación es posible exclusivamente dentro de un proyecto S7. Los


interlocutores accesibles deberán estar conectados a una misma red MPI, PROFIBUS
o ETHERNET.

Funciones:

SFB14 (GET): lee por programa datos del programa de aplicación del
interlocutor.

SFB15 (PUT): escribe por programa datos en el programa de aplicación del


interlocutor.

224
8: PROFIBUS (Configuración en Siemens)

8.7.  Protocolo FMS


PROFIBUS-FMS (Fieldbus Message Specification) ofrece servicios para la transferencia
de datos estructurados (variables FMS) y hasta 237 bytes.

El servicio FMS puede clasificarse en el nivel 7 del modelo de referencia ISO y permite
así una comunicación abierta con equipos no Siemens.

Propiedades
Los servicios FMS permiten leer, inscribir y notificar las variables FMS a través de
enlaces FMS. El interlocutor confirma la recepción de los datos mediante un acuse de
usuario, es decir, la aplicación en el interlocutor remoto ha recibido correctamente los
datos. La transmisión de los datos usando el servicio FMS se realiza exclusivamente a
través de una red PROFIBUS.

Requisitos hardware
■■ S7-300:

□□ CP343-5

■■ S7-400:

□□ CP443-5 Basic

1. Se configura el HW de los 2 equipos, el Cliente y Servidor y las 2 CP’s se deben


conectar a una red PROFIBUS con perfil “Estándar”.

2. Se configuran el cliente. En el NetPro se crea los enlaces entre las CPU se hace
clic con el botón derecho sobre la CPU y se crea un enlace nuevo:

225
Autómatas programables avanzado

Se configura el enlace y se selecciona el equipo interlocutor y tipo de enlace FMS:

Las propiedades del enlace FMS:

226
8: PROFIBUS (Configuración en Siemens)

Se hace clic sobre las opciones

En las variables del interlocutor se indican las variables FMS:

227
Autómatas programables avanzado

Se crea el DB1 en el cliente:

3. En el servidor se crea un DB :

En la tabla de símbolos:

228
8: PROFIBUS (Configuración en Siemens)

Programa servidor:

L EB 0
T “datos”.variable_1 //variable que utiliza el cliente para leer

L “datos”.variable_2 //variable que utiliza el cliente para escribir


T AB 14
Programa cliente:

Función FB3 READ de Librerías → SIMATIC_NET_CP

CALL FB3 , DB3


REQ:=E0.0 //Petición de lectura
ID:=DW#16#10130 //Identificación del enlace
VAR_1:=”indices”.indice_1 //Variable de comunicación a leer
RD_1:=P#A 4.0 BYTE 2 //dirección donde guardar dicha lectura
NDR:=M100.0 //Nueva lectura
ERROR:=M100.1 //error durante el proceso de lectura
STATUS:=MW102 //código de estado

229
8: PROFIBUS (Configuración en Siemens)

RESUMEN

En el entorno industrial nos encontramos con una serie de equipos digitales tales como
controladores, ordenadores de proceso y de gestión, etc., con grados de complejidad
muy diversos según su función. La integración en red de todos ellos comporta ventajas,
pues permite situar la “inteligencia” cerca del proceso, aprovechar al máximo los
recursos y obtener el máximo de información útil, tanto desde el punto de vista técnico
y de control como desde el punto de vista de gestión de la fabricación.


Todo ello ha llevado a la concepción de una estructura óptima de las redes para
obtener todas las ventajas con un mínimo coste y complejidad. Esta estructura óptima
contempla tres niveles jerárquicos: bus de campo, LAN y LAN/WAN.


Para cada uno de estos niveles, el mercado ofrece una serie de productos, de distintas
fuentes, que solucionan una parcela del control y gestión.


Lo deseable sería definir un estándar de red que permita la integración de productos
compatibles de distintos fabricantes.


En la industria actual, parece claro que se va a incorporar una estructura MAP para
grandes redes y que, a nivel de campo, seguirán existiendo dos o tres buses con
máxima implantación y otra serie de productos cuya conexión a la red se deberá hacer
por medio de pasarelas.

231
9
Autómatas programables avanzado
9
DIDÁCTICA
UNIDAD

9.  Bloques de Organización y “SFC’s” de Control y


Gestión
9: Bloques de Organización y “SFC’s” de Control y Gestión

ÍNDICE
OBJETIVOS................................................................................................................................................................ 237
INTRODUCCIÓN....................................................................................................................................................... 238
9.1.  Bloques de organización..................................................................................................................................... 239
9.2.  OB’s de alarma horaria (de OB10 a OB17)........................................................................................................ 243
9.3.  OB’s de alarma de retardo (de OB20 a OB23)................................................................................................... 247
9.4.  OB’s de alarma cíclica (de OB30 a OB38)......................................................................................................... 249
9.5.  OB’s de alarma de proceso (de OB40 a OB47)................................................................................................. 251
9.6.  OB de fallo de alimentación (OB81)................................................................................................................... 254
9.7.  OB’s de arranque (OB100, OB101 y OB102)..................................................................................................... 257
9.8.  Ajuste de hora con el SFC 0 “SET_CLK”........................................................................................................... 263
9.9.  Leer la hora con el SFC 1 “READ_CLK”............................................................................................................. 264
9.10.  Ajustar la hora y establecer el estado del reloj con el SFC 100 “SET_CLKS”.............................................. 265
9.11.  SFC’s para gestionar el contador de horas de funcionamiento..................................................................... 267
9.12.  Gestión de contadores de horas de funcionamiento con SFC 101 “RTM”................................................... 268
9.13.  Ajuste de contadores de horas de funcionamiento con SFC 2 “SET_RTM”................................................. 270
9.14.  Arrancar y parar el contador de horas de funcionamiento con SFC 3 “CTRL_RTM”................................... 271
9.15.  Leer el contador de horas de funcionamiento con el SFC 4 “READ_RTM”.................................................. 272
9.16.  Leer el cronómetro del sistema con SFC 64 “TIME_TCK”............................................................................. 273
9.17.  SFC’s para gestionar alarmas horarias............................................................................................................ 274
9.18.  Características de los SFC’s 28 a 31............................................................................................................... 275
9.19.  Ajustar una alarma horaria con el SFC 28 “SET_TINT”.................................................................................. 277
9.20.  Anular una alarma horaria con el SFC 29 “CAN_TINT”.................................................................................. 279
9.21.  Activar una alarma horaria con el SFC 30 “ACT_TINT”.................................................................................. 280
9.22.  Consultar una alarma horaria con el SFC 31 “QRY_TINT”............................................................................. 281
9.23.  Listas de SFC’s.................................................................................................................................................. 282
9.24.  Listas de SFB’s.................................................................................................................................................. 286
RESUMEN................................................................................................................................................................... 289

235
9: Bloques de Organización y “SFC’s” de Control y Gestión

OBJETIVOS
■ Conocer los distintos bloques de organización existentes.

■ Aprender a parametrizar dichos bloques de organización.


Saber combinar los distintos bloques de organización para un mejor rendimiento del
proceso productivo.

■ Conocer los distintos bloques funcionales existentes en un autómata.

■ Aprender a parametrizar dichos bloques de función.

237
Autómatas programables avanzado

INTRODUCCIÓN

Diremos que un sistema o bloque es lineal si la relación Otro aspecto a considerar es que muchos de los
salida-entrada es una ecuación diferencial lineal. sistemas de control actuales son de tipo digital y
Sin embargo, la mayor parte de los sistemas reales utilizan métodos numéricos para el tratamiento de las
presentan algún tipo de no linealidad, incluso dentro magnitudes analógicas. En tal caso, las magnitudes
de su campo de trabajo. del proceso se capturan por muestreo, las variables
A pesar de ello, si restringimos su estudio a un numéricas que las representan lo hacen con una
determinado rango de valores de entrada-salida o resolución limitada y las relaciones salida-entrada
dividimos su campo de trabajo en tramos, casi todos quedan expresadas por ecuaciones diferenciales.
ellos pueden aproximarse mediante ecuaciones Todo ello afecta al diseño del sistema, pero carece de
lineales. Esto permite estudiar los sistemas no lineales importancia desde el punto de vista de su aplicación.
como lineales por tramos o en el entorno de un punto
de funcionamiento.
Una gran parte de los sistemas analógicos trabajan
en lazo cerrado. Una de las mayores dificultades que
presenta el diseño de dichos sistemas es el de obtener
un regulador óptimo en los aspectos de mínimo error,
máxima rapidez de respuesta y gran capacidad de
adaptación a diferentes tipos de respuesta de una
planta.

238
9: Bloques de Organización y “SFC’s” de Control y Gestión

9.1.  Bloques de organización


Los bloques de organización constituyen la interfase entre el sistema operativo de la
CPU y el programa de usuario. Con la ayuda de los OB’s es posible seleccionar la
ejecución de partes de programas:

■■ Al arrancar la CPU.

■■ En ejecución cíclica o también intermitente temporal.

■■ A determinadas horas o en determinados días.

■■ Después de transcurrir un tiempo preestablecido.

■■ Al producirse errores.

■■ Al dispararse alarmas de proceso.

Los bloques de organización se procesan en correspondencia con la prioridad que


tienen asignada.

239
Autómatas programables avanzado

La tabla siguiente muestra el evento de arranque y la prioridad preajustada que


corresponde a cada OB.

Prioridad
OB Evento de arranque preajustada Aclaración
OB 1 Final del arranque o final del OB 1 1 Ciclo libre
OB 10 Alarma horaria 0 2 Sin valores por
defecto
OB 11 Alarma horaria 1 2
OB 12 Alarma horaria 2 2
OB 13 Alarma horaria 3 2
OB 14 Alarma horaria 4 2
OB 15 Alarma horaria 5 2
OB 16 Alarma horaria 6 2
OB 17 Alarma horaria 7 2
OB 20 Alarma de retardo 0 3 Sin valores por
defecto
OB 21 Alarma de retardo 1 4
Alarma de retardo 2 5
OB 22
Alarma de retardo 3 6
OB 23
OB 30 Alarma cíclica 0 (valor prefijado: impulso de reloj de 5 s) 7 Alarmas
cíclicas
OB 31 Alarma cíclica 0 (valor prefijado: impulso de reloj de 2 s) 8
OB 32 Alarma cíclica 0 (valor prefijado: impulso de reloj de 1 s) 9
OB 33 Alarma cíclica 0 (valor prefijado: impulso de reloj de 500 ms) 10
OB 34 Alarma cíclica 0 (valor prefijado: impulso de reloj de 200 ms) 11
OB 35 Alarma cíclica 0 (valor prefijado: impulso de reloj de 100 ms) 12
OB 36 Alarma cíclica 0 (valor prefijado: impulso de reloj de 50 ms) 13
OB 37 Alarma cíclica 0 (valor prefijado: impulso de reloj de 20 ms) 14
OB 38 Alarma cíclica 0 (valor prefijado: impulso de reloj de 10 ms) 15
OB 40 Alarma de proceso 0 16 Alarmas de
OB 41 Alarma de proceso 1 17 proceso

OB 42 Alarma de proceso 2 18
OB 43 Alarma de proceso 3 19
OB 44 Alarma de proceso 4 20
OB 45 Alarma de proceso 5 21
OB 46 Alarma de proceso 6 22
OB 47 Alarma de proceso 7 23
OB 55 Alarma de estado 2 Alarmas DPV1
OB 56 Alarma de actualización 2
OB 57 Alarma del fabricante
2

240
9: Bloques de Organización y “SFC’s” de Control y Gestión

OB Evento de arranque Prioridad preajustada Aclaración


OB 60 Alarma de multiprocesa-
Llamada de la SFC 35 “MP_ALM” 25
miento
OB 61 Alarma de sincronismo 1 25
OB 62 Alarma de sincronismo 2 25
OB 63 Alarmas sincronismo
Alarma de sincronismo 3 25
OB 64 Alarma de sincronismo 4 25
OB 65 Alarmas de sincronismo
Alarma de sincronismo tecnológica 25
tecnológicas
OB 70 Error de redundancia de la periferia (solo en CPU’s H) 25
OB 72 Error de redundancia de la CPU (solo en CPU’s H) Alarmas de error de
28
redundancia
OB 73 OB de error de redundancia de la comunicación 25
OB 80 Error de tiempo 26, 281
OB 81 26, 281) en el S7-300 y
Error de la fuente de alimentación
CPU 318
OB 82 26, 281) en el S7-300
Alarma de diagnóstico 25, 281) en el S7-400 y
CPU 318
OB 83 6, 281) en el S7-300
Alarma de inserción / extracción 25, 281) en el S7-400 y
CPU 318
OB 84 26, 281) en el S7-300
Error de hardware CPU 25,281) en el S7-400 y
CPU 318
OB 85 26, 281) en el S7-300
Error de ejecución del programa 25, 281) en el S7-400
y CPU 318
OB 86 26, 281) en el S7-300
Fallo de un aparato de ampliación, de un sistema maestro DP o de un
equipo en la preoferta descentralizada 25, 281) en el S7-400 y
CPU 318
OB 87 26, 281) en el S7-300
Error de comunicación 25, 281) en el S7-400 y
CPU 318
OB 88
Ejecución interrumpida 28

OB 90 Rearranque completo o borrado de un bloque en curso de tratamiento Ciclo de tarea no


292)
en el OB 90 o carga de un OB 90 en la CPU o fin del OB 90 prioritaria
OB 100 Rearranque completo (arranque en caliente) 271)
OB 101
Rearranque 271) Alarmas sincronismo
OB 102
Arranque en frío 271)
OB 121 Error de programación Prioridad del OB causan-
te del error Alarmas de sincronismo
Prioridad del OB causan- tecnológicas
OB 122 Error de acceso a la periferia te del error

241
Autómatas programables avanzado

1. Las prioridades 27 y 28 son válidas en el modelo de prioridades del arranque.

2. La prioridad 29 corresponde a la prioridad 0.29, es decir, el ciclo de la tarea no


prioritaria tiene menor prioridad que el ciclo libre.

242
9: Bloques de Organización y “SFC’s” de Control y Gestión

9.2.  OB’s de alarma horaria (de OB10 a OB17)


S7 ofrece ocho OB’s (OB 10 a OB 17) de arranque único o periódico. Tanto con las
SFC’s como con STEP 7 puede parametrizar la CPU de manera que los OB’s sean
procesados en los siguientes intervalos:

■■ Una vez.

■■ Cada minuto.

■■ Cada hora.

■■ Cada día.

■■ Cada semana.

■■ Cada mes.

■■ Cada año.

■■ A final de mes.

Modo de funcionamiento de los OB’s de alarma horaria:


Para arrancar una alarma horaria es necesario ajustar primero la alarma y activarla
seguidamente. Puede elegir una de las tres alternativas siguientes:

■■ Arranque automático de la alarma horaria, que se produce al ajustar y activar


la alarma horaria con STEP 7. La tabla siguiente muestra las posibilidades que
existen para la activación de una alarma horaria con STEP 7.

■■ Ajustando la alarma horaria con STEP 7 y activándola por la llamada a SFC 30


“ACT_TINT”, desde el programa.

■■ Ajustando la alarma horaria mediante la llamada a SFC 28 “SET_TINT” y


activándola mediante la llamada a SFC 30 “ACT_TINT”.

Intervalo Descripción
No activado El OB de alarma horaria no es procesado incluso aunque esté cargado
en la CPU. La alarma horaria puede activarse mediante la llamada a la
SFC 30.
Activado una vez El OB de alarma horaria se anula automáticamente, después de haber
sido procesado una vez como se ha indicado.

Su programa puede ajustar de nuevo con SFC 28 la alarma horaria y


activarla otra vez con SFC 30.
Activado periódicamente La CPU determina en el momento de la alarma horaria, a partir de
la hora actual y del período, el próximo momento de arranque de la
alarma horaria.

243
Autómatas programables avanzado

Con ayuda de las SFC’s 39 a 42 pueden bloquearse o retardarse y habilitarse de


nuevo las alarmas horarias.

Condiciones que afectan a los OB’s de alarma horaria:


Como una alarma horaria sólo surge a determinados intervalos, la función de los
correspondientes OB’s puede verse afectada por determinadas condiciones durante
la ejecución del programa.

La tabla siguiente muestra algunas de estas condiciones y describe su efecto sobre la


ejecución del OB de alarma horaria.

Condición Resultado
EL programa llama la SFC29 El sistema operativo borra el evento de arranque (fecha y hora) de la
“CAN_TINT” y anula una alarma alarma horaria. Es necesario ajustar de nuevo el evento de arranque y
horaria. activarlo cuando se deba llamar de nuevo al OB.
El programa ha intentado El sistema operativo llama al OB 85. Si el OB 85 no fue programado
activar un OB de alarma horaria (cargado en la CPU) la CPU para entonces al estado operativo STOP.
que no estaba cargado en
la CPU en el momento de la
activación.
Al sincronizar o corregir el reloj El sistema operativo llama al OB 80 y codifica el número del OB de alar-
del sistema de la CPU, se ha ma horaria y las informaciones sobre el evento de arranque en el OB 80.
adelantado la hora y con ello se
ha saltado el evento de arran- Después, el sistema operativo ejecutará una vez el OB de alarma horaria,
que, la fecha o la hora para un independientemente del número de veces que en teoría debía ejecutar-
OB de alarma horaria. se. Las informaciones sobre el evento de arranque del OB 80 muestran
la fecha y la hora de la primera vez que se saltó el OB de alarma
Al sincronizar o corregir el reloj CPU’s S7-400 y una CPU 318:
del sistema de la CPU se ha
retrasado la hora repitiéndose Si antes de retrasar el reloj, se activó el OB de alarma horaria, éste no se
el evento de arranque, la fecha volverá a llamar a las horas que ya han pasado.
o la hora para un OB de alarma
CPU’s S7-300; el OB de alarma horaria se ejecuta.
horaria.

244
9: Bloques de Organización y “SFC’s” de Control y Gestión

Condición Resultado
La CPU realiza un rearranque Cada OB de alarma horaria configurado mediante una SFC adopta de
completo (arranque en caliente) nuevo la configuración ajustada con el STEP 7.
o un arranque en frío.
Si se ha configurado una alarma horaria de manera que el correspon-
diente OB arranque una vez, habiéndose ajustado y activado el OB con
STEP 7, el sistema operativo llamará una vez al OB tras un rearranque
completo (arranque en caliente) o un arranque en frío, si el momento de
arranque ya ha pasado (con respecto al reloj de tiempo real de la CPU).
Se está procesando todavía un El sistema operativo llama al OB 80. Si el OB no se ha programado, la
OB de alarma horaria cuando CPU pasa entonces al estado operativo STOP.
aparece ya el evento de arran-
que para el próximo intervalo. En caso contrario, tras la ejecución del OB 80 y del OB de alarma hora-
ria, se efectúa la ejecución OB solicitada.

Datos locales de los OB’s de alarma horaria


La tabla siguiente contiene las variables temporales (TEMP) de un OB de alarma
horaria.

Como nombres de variables se eligieron los nombres por defecto del OB 10.

Variable Tipo de datos Descripción


OB10_EV_CLASS BYTE Clase de evento e identificadores: B#16#11: Alarma
está activada
OB10_STRT_INFO BYTE B#16#11: Solicitud de arranque para OB10

(B#16#12: Solicitud de arranque para OB 11)

(B#16#18: Solicitud de arranque para OB 17)


OB10_PRIORITY BYTE Prioridad parametrizada; valor prefijado: 2
OB10_OB_NUMBR BYTE Número de OB (10 hasta 17)
OB10_RESERVED_1 BYTE Reservado
OB10_RESERVED_2 BYTE Reservado

245
Autómatas programables avanzado

Variable Tipo de datos Descripción


OB10_PERIOD_EXE WORD EI OB se ejecuta en el intervalo indicado:

W#16#0000: Una vez

W#16#0201: Cada minuto

W#16#0401: Cada hora

W#16#1001: Cada día

W#16#1201: Cada semana

W#16#1401: Cada mes

W#16#1801: Cada año

W#16
OB10_RESERVED_3 INT Reservado
OB10_RESERVED_4 INT Reservado
OB10_DATE_TIME DATE_AND_TIME Fecha y hora a las que se solicitó el OB

246
9: Bloques de Organización y “SFC’s” de Control y Gestión

9.3.  OB’s de alarma de retardo (de OB20 a OB23)


S7 ofrece hasta cuatro OB’s (OB 20 hasta OB 23) que son ejecutados en cada caso
tras un tiempo de retardo parametrizable. Cada OB de alarma de retardo arranca
mediante una llamada a la SFC 32 “SRT_DINT” y el tiempo de retardo es un parámetro
de entrada de la SFC.

Si el programa llama a la SFC 32 “SRT_DINT”, debe entregarse el número de OB, el


tiempo de retardo y un identificador específico del usuario. Tras el tiempo de retardo
indicado, arranca el correspondiente OB. También puede anularse la ejecución de una
alarma de retardo que todavía no ha sido arrancada.

Modo de funcionamiento de los OB’s de alarma de retardo


Después de transcurrir el tiempo cuyo valor se ha indicado en ms a la SFC 32
conjuntamente con un número OB, el sistema operativo arranca al correspondiente
OB.

Si desea utilizar OB’s de alarma de retardo, es preciso ejecutar las siguientes tareas:

■■ Llamar la SFC 32 “SRT_DINT”.

■■ Cargar en la CPU el OB de alarma de retardo como parte de su programa.

Los OB’s de alarma de retardo sólo son ejecutados si la CPU se encuentra en estado
operativo RUN. Un rearranque completo (arranque en caliente) y un arranque en frío
borran cualquier evento de arranque de un OB de alarma de retardo. Una alarma de
retardo que todavía no está activada, puede anularse con la SFC 33 “CAN_DINT”.

El tiempo de retardo se mide con una precisión de 1 ms y una vez transcurrido puede
ser inmediatamente arrancado de nuevo. Un tiempo de retardo puede arrancarse otra
vez inmediatamente después de transcurrido y con ayuda de la SFC 34 “QRY_DINT”
es posible determinar el estado de una alarma de retardo.

El sistema operativo llama un OB de tratamiento de error asíncrono, cuando surge uno


de los siguientes eventos:

■■ Cuando el sistema operativo intenta arrancar un OB que no está cargado y cuyo


número se ha indicado al llamar la SFC 32 “SRT_DINT”.

■■ Cuando surge el próximo evento de arranque para una alarma de retardo antes
de que haya finalizado la ejecución del correspondiente OB de alarma de retardo.

Con ayuda de las SFC’s 39 hasta 42 es posible bloquear o retardar y habilitar de nuevo
alarmas de retardo.

247
Autómatas programables avanzado

Datos locales de los OB’s de alarma de retardo


La tabla siguiente contiene las variables temporales (TEMP) de un OB de alarma de
retardo.

Como nombres de variables se han elegido los nombres por defecto del OB 20.

Variable Tipo de datos Declaración Descripción


OB20_EV_CLASS BYTE TEMP Clase de evento e identifica-
dores:

B#16#11: Alarma activada


OB20_STRT_INF BYTE TEMP B#16#21: Solicitud de arran-
que para OB 20

B#16#22: Solicitud de arran-


que para OB 21

B#16#23: Solicitud de arran-


que para OB 22

B#16#24: Solicitud de arran-


que para OB 23
OB20_PRIORITY BYTE TEMP Prioridad parametrizada; valor
prefijado: de 3 (OB 20) a 6
(OB 23)
OB20_OB_NUMBR BYTE TEMP Número de OB (20 hasta 23)
OB20_RESERVED_1 BYTE TEMP Reservado
OB20_RESERVED_2 BYTE TEMP Reservado
OB20_SIGN WORD TEMP Identificador de usuario:
parámetro de entrada SIGN
de la llamada de SFC 32
“SRT_DINT”
OB20_DTIME TIME TEMP Tiempo de retardo parametri-
zado en ms
OB20_DATE_TIME DATE_AND_TIME TEMP Fecha y hora a las que se
solicitó el OB

248
9: Bloques de Organización y “SFC’s” de Control y Gestión

9.4.  OB’s de alarma cíclica (de OB30 a OB38)


S7 dispone de hasta nueve OB’s de alarma cíclica (OB 30 a OB 38). Con su ayuda es
posible arrancar programas a intervalos temporales equidistantes.

La tabla siguiente muestra los valores preajustados para las bases de tiempo y las
prioridades de los OB’s de alarma cíclica.

Valor prefijado para la Valor prefijado para la


OB de alarma cíclica
base de tiempo prioridad
OB 30 5s 7
OB 31 2s 8
OB 32 1s 9
OB 33 500 ms 10
OB 34 200 ms 11
OB 35 100 ms 12
OB 36 50 ms 13
OB 37 20 ms 14
OB 38 10 ms 15

Modo de funcionamiento de los OB’s de alarma cíclica


Los momentos de arranque equidistantes de los OB’s de alarma cíclica resultan de la
correspondiente cadencia temporal y del desfase correspondiente.

Con ayuda de las SFC’s 39 hasta 42 es posible bloquear o retardar y habilitar de nuevo
las alarmas cíclicas.

Los márgenes de valores para los parámetros cadencia temporal, prioridad y desfase,
pueden consultarse en los datos técnicos de su CPU. La modificación de los
parámetros se realiza por parametrización con STEP 7.

249
Autómatas programables avanzado

Datos locales de los OB’s de alarma cíclica


La tabla siguiente contiene las variables temporales (TEMP) de un OB de alarma cíclica.

Como nombres de variables se eligieron los nombres por defecto del OB 35.

Variable Tipo de datos Descripción


OB35_Ev_CLASS BYTE Clase de evento e identificadores:
B#1611: Alarme activada
OB35_STRT_INF BYTE B#16#30: Solicitud de arranque para OB
de alarma cíclica con tratamiento espe-
cial (sólo en CPU’s H y allí únicamente se
ha configurado de forma explícita)

B#16#31: Solicitud de arranque para


OB 30

B#16#36: Solicitud de arranque para


OB 35

B#16#39: Solicitud de arranque para


OB 38

B#16#3A: Solicitud de arranque para


OB de alarma cíclica con tratamiento
especial (sólo en S7-300 u solamente si
se ha configurado de forma explícita)
OB35_PRIORITY BYTE Prioridad parametrizada; valores prefija-
dos: de 7 (OB 30) a 15 (OB 38)
OB35_OB_NUMBR BYTE Número de OB (30 hasta 38)
OB35_RESERVED_1 BYTE Reservado
OB35_RESERVED_2 BYTE Reservado
OB35_PHASE_OFFSET WORD Si OB35_STRT_INF= B#16#3A: desfase
en us

En los restantes casos: desfase en ms


OB35_RESERVED_3 INT Reservado
OB35_EXC_FREQ INT Si OB35_STRT_INF= B#16#3A: base de
tiempo en us

En los casos restantes: base de tiempo


en ms
OB35_DATE_TIME DATE_AND_TIME Fecha y hora a las que se solicitó el OB

250
9: Bloques de Organización y “SFC’s” de Control y Gestión

9.5.  OB’s de alarma de proceso (de OB40 a OB47)


En este punto presentamos en qué consiste el OB’S de alarma de procesos, y cómo
funciona y los datos locales.

S7 ofrece ocho alarmas de proceso independientes entre sí y cada una de ellas


dispone de un OB.

Para cada módulo de señales que debe activar alarmas de proceso se utiliza la
parametrización con STEP 7:

■■ Qué canales y bajo qué condición marginal deben originar una alarma de
proceso.

■■ Qué OB de alarma de proceso se asigna a los diversos grupos de canales (por


defecto se ejecutan todas las alarmas de proceso por OB 40).

En los CP’s y FM’s debe emplearse para ello el correspondiente software para el
módulo.

Las prioridades para los diversos OB’s de alarma de proceso se establecen con STEP
7.

Modo de funcionamiento de los OB’s de alarma de proceso


Tras la activación de una alarma de proceso por parte del módulo, el sistema operativo
identifica el slot y determina el correspondiente OB de alarma de proceso. Si éste
presenta una prioridad más alta que la prioridad activa en el momento, se produce su
arranque.

El acuse específico de canal se produce tras haber concluido este OB de alarma de


proceso.

Si en el intervalo entre la identificación y el acuse de una alarma de proceso surge


de nuevo en el mismo módulo un evento que deba desencadenar una alarma de
proceso, rige lo siguiente:

■■ Si el evento surge en el canal que ha activado anteriormente la alarma de


proceso, se pierde la correspondiente alarma. Este hecho se representa en la
figura siguiente tomando como ejemplo un canal de un módulo de entradas
digitales. El evento de arranque es el flanco ascendente positivo.

El OB correspondiente de alarma de proceso, es el OB 40.

251
Autómatas programables avanzado

■■ Si el evento surge en otro canal del mismo módulo, no puede activarse


momentáneamente ninguna alarma de proceso. Sin embargo no se pierde, sino
que se activa tras el acuse de la alarma de proceso activo en el momento.

Si se activa una alarma de proceso cuyo correspondiente OB está activado


momentáneamente debido a una alarma de proceso de otro módulo, la nueva solicitud
se registra y el OB se procesa en otro momento.

Con ayuda de las SFC’s 39 a 42 es posible bloquear o retardar y habilitar de nuevo las
alarmas de proceso.

La parametrización de las alarmas de proceso de un módulo puede efectuarse no sólo


con STEP 7 sino también con las SFC’s 55 a 57.

Datos locales de los OB’s de alarma de proceso


La tabla siguiente describe las variables temporales (TEMP) de un OB de alarma de
proceso.

Como nombres de variables se han elegido los nombres por defecto del OB 40.

Variable Tipo de datos Descripción


OB40_EV_CLASS BYTE Clase de evento e identificadores:

B#16#11: Alarma está activada


OB40_STRT_INF BYTE B#16#41: Alarma a través de línea de interrupción 1

B#16#42: Alarma a través de línea de interrupción 2


(sólo en S7-400)

B#16#43: Alarma a través de línea de interrupción 3


(sólo en S7-400)

B#16#44: Alarma a través de línea de interrupción 4


(sólo en S7-400)

B#16#45: WinAC: Alarma disparada por el PC


OB40_PRIORITY BYTE Prioridad parametrizada: valores prefijados: de 16 (OB
40) a 23 (OB47)
OB40_OB_NUMBR BYTE Número de OB (40 hasta 47)

252
9: Bloques de Organización y “SFC’s” de Control y Gestión

Variable Tipo de datos Descripción


OB40_RESERVED_1 BYTE Reservado
OB40_IO_FLAG BYTE Módulo de entrada: B#16#54

Módulo de salidas: B#16#55


OB40_MDL_ADDR WORD Dirección bárica lógica del módulo que ha activado la
alarma
OB40_POINT_ADDR DWORD En módulos digitales: mapa de bits con los estados de
las entradas en el módulo. La asignación de qué bit de
OB40_POINT_ADDR pertenece a que canal del módulo
debe consultarse en la descripción del módulo corres-
pondiente

En módulos analógicos: mapa de bits con la relación


de qué canales han superado qué límites (Encontrará la
estructura exacta en /71/ o /101/)

En CP o IM. Estado de alarma del módulo (no es relevan-


te para el usuario)
OB40_DATE_TIME DATE_AND_TIME Fecha y hora a las que se solicitó el OB

253
Autómatas programables avanzado

9.6.  OB de fallo de alimentación (OB81)


El sistema operativo de la CPU llama al OB 81 cuando se presenta un evento activado
por un fallo en la alimentación normal (sólo en el S7–400) o de respaldo en tampón
(tanto en caso de un evento entrante como de uno saliente).

Si se produce un fallo de la pila en el S7-400, sólo se llama al OB 81 al estar activada


la comprobación de la pila mediante el interruptor BATT.INDIC.

La CPU no pasa al estado operativo STOP si no está programado el OB 81.

Con ayuda de las SFC’s 39 hasta 42 puede bloquearse, retardarse o habilitarse de


nuevo el OB de fallo de alimentación.

Datos locales del OB de fallo de alimentación


La tabla siguiente contiene las variables temporales (TEMP) del OB de fallo de
alimentación.

Como nombres de variables se eligieron los nombres por defecto del OB 81.

Variable Tipo de datos Descripción


OB81_EV_CLASS BYTE Clase de evento e identificadores:

B#16#38:Evento saliente.

B#16#39:Evento entrante.

OB81_FLT_ID BYTE Código de error (posibles valores:

B#16#21, B#16#22, B#16#23,


B#16#31, B#16#32, B#16#23.
OB81_PRIORITY BYTE Prioridad parametrizada con STEP
7 (HW Config)

Por ejemplo valores ajustables


para el estado operativo RUN:
2-26.
OB81_OB_NUMBER BYTE Número de OB (81)
OB81_RESERVED_1 BYTE Reservado
OB81_RESERVED_2 BYTE Reservado

254
9: Bloques de Organización y “SFC’s” de Control y Gestión

Variable Tipo de datos Descripción


OB81_RACK_CPU WORD Bits 0 a 7: B#16#00

Bits 8 a 15

En una CPU estándar: B#16#00

En una CPU H: bits 8 a 10: n*


de bastidor, Bit 11: 0=CPU de
reserva, 1=CPU maestra, Bits 12 a
15: 1111.

OB81_RESERVED_3 BYTE Relevante únicamente para


los códigos de error B#16#31,
B#16#32, B#16#33.
OB81_RESERVED_4 BYTE Relevante únicamente para
los códigos de error B#16#31,
B#16#32, B#16#33.
OB81_RESERVED_5 BYTE Relevante únicamente para
los códigos de error B#16#31,
B#16#32, B#16#33.
OB81_RESERVED_6 BYTE Relevante únicamente para
los códigos de error B#16#31,
B#16#32, B#16#33.
OB81_DATE_TIME Fecha y hora a las que se solicitó
DATE_AND_TIME
el OB.

Las variables OB81_RESERVED_i, 3 ≤ i ≤ 6, contienen aquellos aparatos de


ampliación en los que ha fallado o se ha reanudado el respaldo en tampón por
pila (con código de error B#16#31), la tensión de respaldo (con código de error
B#16#32) o la alimentación de 24 V (con código de error B#16#33).
La tabla siguiente indica a qué bastidor corresponde cada bit en las variables OB81_
RESERVED_i, 3 ≤ i ≤ 6.

OB81_RESERVED_6 OB81_RESERVED_5 OB81_RESERVED_4 OB81_RESERVED_3


Bit 0 Reservado 8º bastidor 16º bastidor Reservado
Bit 1 1 er bastidor 9º bastidor 17º bastidor Reservado
Bit 2 2º batidor 10º bastidor 18º bastidor Reservado
Bit 3 3er bastidor 11º bastidor 19º bastidor Reservado
Bit 4 4º bastidor 12º bastidor 20º bastidor Reservado
Bit 5 5º bastidor 13º bastidor 21º bastidor Reservado
Bit 6 6º bastidor 14º bastidor reservado Reservado
Bit 7 7º bastidor 15º bastidor reservado Reservado

255
Autómatas programables avanzado

Los bits en las variables OB81_RESERVED_i tienen el siguiente significado (para


el bastidor afectado):
■■ En caso de un evento entrante se marcan los aparatos de ampliación (están
activados los bits correspondientes), en los que ha fallado por lo menos una pila
o la tensión de respaldo o la alimentación de 24 V. Ya no se indican los aparatos
de ampliación en los que ya ha fallado anteriormente por lo menos una pila o una
tensión respaldo o la alimentación de 24 V.

■■ En caso de un evento saliente se notifica el restablecimiento del respaldo en


tampón en un bastidor (están activados los correspondientes bits) como mínimo.

La variable (siguiente tabla) muestra qué evento ha provocado el inicio del OB 81.

OB81_EV_CLASS OB81_FLT_ID Significado


B#16#39/B#16#38 B#16#21 Existe al menos una pila tampón del aparato central
descargada/desmontada (BATTF)

Nota: El evento entrante sólo se presenta al fallar


una de las dos pilas (en el caso de las pilas tapón
redundantes). Si luego falta también la otra pila, el
evento no se presenta nuevamente.
B#16#39/B#16#38 B#16#22 Falta tensión de respaldo en el aparato central (BAF).
B#16#39/B#16#38 B#16#23 Fallo de la alimentación de 24 V en el aparato
central/eliminada.
B#16#39/B#16#38 B#16#25 Hay por lo menos una pila tampón descargada/des-
montada en al menos un aparato central redundante
(BATTF).
B#16#39/B#16#38 B#16#26 Falta/eliminada tensión de respaldo en al menos un
aparato central redundante (BAF).
B#16#39/B#16#38 B#16#27 Fallo de la alimentación de 24 voltios en al menos
un aparato central redundante.
B#16#39/B#16#38 B#16#31 Hay por lo menos una pila tapón de por lo menos un
bastidor descargada/eliminada (BATTF).
B#16#39/B#16#38 B#16#32 Falta/eliminada tensión respaldo en por lo menos un
bastidor (BAF).
B#16#39/B#16#38 B#16#33 Fallo de la alimentación de 24V en por lo menos un
bastidor/eliminada.

256
9: Bloques de Organización y “SFC’s” de Control y Gestión

9.7.  OB’s de arranque (OB100, OB101 y OB102)


En este apartado presentamos las posibles modos de arranque de este OB’S, cómo
se efectúan y los datos locales.

Modos de arranque
Se distinguen los siguientes modos de arranque:

■■ Rearranque (no en los S7 300 ni S7 400 H).

■■ Arranque en caliente.

■■ Arranque en frío.

La tabla siguiente muestra el OB al que el sistema operativo llama durante el arranque.

Modo de arranque OB asignado


Rearranque OB101
Rearranque completo (arranque en caliente OB 100
Arranque el frío OB 102

Descripción
La CPU efectúa un arranque:

■■ Después de ALIMENTACION ON.

■■ Si se cambia de STOP a RUN-P el selector de modo de operación.

■■ Tras la solicitud por una función de comunicación (por comando de menú desde
la unidad PG o por llamada de los bloques de función para comunicaciones 19
“START”, o 21 “RESUME” en otra CPU).

■■ Sincronización en el modo multiprocesador.

■■ En un sistema H, tras acoplar (sólo en la CPU de reserva).

En función del evento de arranque, de la CPU existente y de sus parámetros ajustados,


se activa el OB de rearranque asignado (OB 100, OB 101 y OB 102).

Mediante la programación correspondiente es posible realizar ajustes previos para


el programa cíclico (excepción: en un sistema H, tras el acoplamiento se ejecuta un
arranque en la CPU de reserva, pero sin llamar al OB de arranque).

257
Autómatas programables avanzado

Datos locales de los OB de arranque


La tabla siguiente contiene las variables temporales (TEMP) de un OB de arranque.
Como nombres de variables se han elegido los nombres por defecto.

Variable Tipo de datos Descripción


OB100_STRTUP BYTE Solicitud de arranque:

B#16#81: Solicitud manual de rearranque


completo (arranque en caliente).

B#16#82: Solicitud automática de


rearranque completo (arranque en
caliente).

B#16#83: Solicitud manual de rearranque.

B#16#84: Solicitud automática de


rearranque.

B#16#85: Solicitud manual de arranque


en frío.

B#16#87: Maestro: Solicitud manual de


arranque en frío.

B#16#88: Maestro: Solicitud automática


de arranque en frío

B#16#8A: Maestro: Solicitud manual


de rearranque completo (arranque en
caliente).

B#16#8C: Reserva: solicitud manual de


arranque.

B#16#8D: Reserva: solicitud automática


de arranque.
OB100_PRIORITY BYTE Prioridad: 27.
OB100_OB_NUMBR BYTE Número de OB (100. 101 ó 102).
OB100_RESERVED_1 BYTE Reservado.
OB100_RESERVED_2 BYTE Reservado.
OB100_STOP WORD Número del evento que ha llevado la CPU
a STOP.
OB100_STRT_INFO DWORD Informaciones complementarias cobre el
arranque actual (véase la tabla siguiente).
OB100_DATE_TIME DATE_AND_TIME Fecha y hora a las que se solicitó el OB.

258
9: Bloques de Organización y “SFC’s” de Control y Gestión

Bit Significado Valores binarios posibles Aclaración

31-24 Información de 0000 xxxx Nº de bastidor 0 (solo en las CPU H).


arranque
0100 xxxx Nº de bastidor 1 (solo en las CPU H).
1000 xxxx Nº de bastidor 2 (solo en las CPU H).
0001 xxxx Multiprocesamiento (válido para los S7-400).
0010 xxxx Funcionamiento de varias unidades centrales
en el bastidor segmentado (válido para los
S7-400).
Xxxx xxx0 No existen diferencias entre la configuración
teórica y la real (válido para los S7-300).
Xxxx xxx1 Diferencia entre la configuración teórica y la
real (válido para los S7-300).
Xxxx xx0x No existen diferencias entre la configuración
teórica y real.
Xxxx xx1x Diferencia entre la configuración teórica y la
real.
Xxxx x0xx No es una CPU tipo H.
Xxxx x1xxx CPU tipo H.
Xxxx 0xxx Reloj para la indicación de hora y fecha no
respaldado en la última CONEXIÓN.
Xxxx 1xxx Reloj para la indicación de hora y fecha
respaldado en la última CONEXIÓN.

259
Autómatas programables avanzado

Bit Significado Valores binarios posibles Aclaración


23-16 Modo de arranque 0000 0001 Rearranque complete (arranque en caliente) con
recién ejecutado modo multiprocesador sin actuar en la CPU, según la
parametrización (sólo S7-400).
0000 0011 Rearranque completo (arranque en caliente) con el
selector de modos de operación.
0000 0100 Rearranque complete (arranque en caliente) con el
selector de modos de operación.
0000 0101 Arranque en frío con modo multiprocesador sin actuar
en la CPU, según la parametrización (sólo S7-400).
0000 0111 Arranque en frío con el selector de modos de operación.
0000 1000 Arranque en frío por la actuación en MPI.
0000 1010 Rearranque con modo multiprocesador sin actuar en la
CPU, según la parametrización (sólo S7-400).
0000 1011 Rearranque con el selector de modos de operación (sólo
S7-400).
0000 1100 Rearranque por actuación en MPI (Solo S7-400).
0001 0000 Rearranque complete automático tras CONEXIÓN
respaldada.
0001 0001 Arranque en frío automático tras CONEXIÓN respaldada,
conforme a la parametrización.
0001 0011 Rearranque completo (arranque en caliente) con el
selector en modos de operación; última CONEXIÓN
respaldada.
0010 0000 Rearranque completo automático (arranque en caliente)
tras conexión no respaldada (con borrado total por parte
del sistema).
0010 0001 Arranque en frío automático tras CONEXIÓN no
respaldada (con borrado total por parte del sistema).
0010 0011 Rearranque complete (arranque en caliente) con el
selector de modos de operación; última CONEXIÓN no
respaldada.
0010 0100 Rearranque completo (arranque en caliente) por
actuación en MPI; última CONEXIÓN no respaldada.

1010 0000 Rearranque automático tras CONEXIÓN respaldada


según la parametrización (sólo S7-400).

Bit Significado Valores binarios posibles Aclaración


0010 0100 Rearranque completo (arranque en caliente)
por actuación en MPI; última CONEXIÓN no
respaldada.
1010 0000 Rearranque automático tras CONEXIÓN
respaldada según la parametrización (sólo
S7-400).

260
9: Bloques de Organización y “SFC’s” de Control y Gestión

15-12 Viabilidad de 0000 Arranque automático no aceptable, borrado


los modos de total solicitado.
arranque auto-
0001 Arranque automático no aceptable, hay que
máticos
cambiar parámetros.
0111 Rearranque completo (arranque en caliente)
aceptable.
1111 Rearranque completo (arranque en caliente) y
rearranque aceptables (sólo S7-400).
11-8 Viabilidad 0000 Arranque no aceptable, borrado total solici-
de modos tado.
de arranque
0001 Arranque no aceptable; hay que cambiar
manuales
parámetros, etc.
0111 Rearranque completo (arranque en caliente)
aceptable.
1111 Rearranque cinoketi -8arranque en caliente) y
rearranque aceptables (sólo S7-400).

261
Autómatas programables avanzado

Bit Significado Valores binarios posibles Aclaración


7-0 Última actuación 0000 0000 Ningún modo de arranque.
válida o ajuste del
0000 0001 Rearranque completo (arranque en caliente)
modo de arranque
con modo multiprocesador sin actuación
automático con
en la CPU, según la parametrización (salo
CONEXIÓN
S7-400).
0000 0011 Rearranque completo (arranque en caliente)
con el selector de modos operativos.
0000 0100 Arranque completo (arranque en caliente)
por actuación en MPI.
0000 0101 Rearranque en el modo multiprocesador sin
actuar en la CPU, según parametrización
(sólo S7-400).
0000 0111 Arranque en frío con el selector de modos
operativos.
0000 1000 Arranque en frío por actuación en MPI
0000 1010 Rearranque con multiprocesador sin actua-
ción en la CPU conforme a la parametriza-
ción (sólo S7-400).
0000 1011 Rearranque a través del selector de modos
de operación (sólo S7-400).
0000 1100 Rearranque por actuación en MPI (sólo
S7-400).
0001 0000 Rearranque completo (arranque en caliente)
tras CONEXIÓN respaldada.
0001 0001 Arranque en frío tras CONEXIÓN respalda-
da, conforme a la parametrización.
0001 0011 Rearranque completo (arranque en caliente)
con el selector de modos; última CONEXIÓN
respaldada.
0001 0100 Rearranque completo (arranque en caliente)
por actuación en MPI: última CONEXIÓN
respaldada.
0010 0000 Rearranque completo (arranque en caliente)
tras CONEXIÓN no respaldada (con borrado
total por parte del sistema).
0010 0001 Arranque en frío tras CONEXIÓN respaldada
(con borrado total por parte del sistema).
0010 0011 Rearranque completo (arranque en caliente)
con el selector de modos; última CONEXIÓN
no respaldada.
0010 0100 Rearranque completo (arranque en caliente)
por actuación en MPI; última CONEXIÓN no
respaldada.
1010 0000 Rearranque automático tras CONEXIÓN no
respaldada, según la parametrización (sólo
S7-400).

262
9: Bloques de Organización y “SFC’s” de Control y Gestión

9.8.  Ajuste de hora con el SFC 0 “SET_CLK”


Descripción
Con la llamada a la SFC 0 “SET_CLK” (set system clock) se ajustan la hora y la fecha del
reloj de la CPU. El reloj avanza entonces a partir de la hora y fecha ajustadas.

Si el reloj es un maestro (master), la CPU arranca también la sincronización de la hora


al llamar la SFC 0 y los intervalos de sincronización se ajustan con STEP 7.

Parámetro Declaración Tipo de datos Área de memoria Descripción


PDT IMPUT DT D.L. En la entrada PDT se indican
la fecha y la hora que se
desea ajustar.
RET_VAL OUTPUT INT E,A,M,D,L Si durante el proceso de la
función ocurre un error, el
calor de retorno contiene un
código de error.

Fecha y hora
La fecha y la hora se indican con el tipo de datos DT. Ejemplo para el 15 de enero de
1995, 10:30 y 30 segundos: DT#1995-01-15-10:30:30.

La hora sólo puede ajustarse mediante múltiplos de segundo y el día de la semana lo


calcula la SFC 0 “SET_CLK” a partir de la fecha.

El tipo de datos DT puede generarse con la FC 3 “D_TOD_DT” (v. apt. Funciones de


reloj; FC 1, FC 3, FC 6, FC 7, FC 8, FC 33, FC 34, FC 35, FC 40).

Informaciones de error

Código de error (W#16#...) Explicación


0000 No hay error.
8080 Error en la fecha.
8081 Error en la hora.
8xyy Información general sobre errores, consulte Evaluación de errores
con el parámetro de salida ETC_VAL.

263
Autómatas programables avanzado

9.9.  Leer la hora con el SFC 1 “READ_CLK”


Con la SFC 1 “READ_CLK” (read system clock) se lee el reloj en la CPU y se obtienen
la fecha y hora actuales.

Parámetro Declaración Tipo de datos Área de memoria Descripción


RET_VAL Si durante el proceso de
la función ocurre un error,
OUTPUT INT E,A,M,D,L
el valor de retorno contie-
ne un código de error.
CDT En la salida CDT se
OUTPUT DT D,L. emiten la fecha y la hora
actuales.

264
9: Bloques de Organización y “SFC’s” de Control y Gestión

9.10.  Ajustar la hora y establecer el estado del reloj con


el SFC 100 “SET_CLKS”
Con la SFC 100 “SET_CLKS” se ajusta la hora de la CPU y se establece el estado del
reloj.

Mediante el parámetro MODE puede predeterminar si desea modificar sólo la hora,


sólo el estado horario o ambos valores. Este procedimiento se explica en la siguiente
tabla:

MODE (B#16#...) Significado


01 Ajustar la hora:

La llamada SFC corresponde a la llama de la SFC 0 “SET_CLK”.

Los parámetros de entrada CORR, SUMMER y ANN_1 no se evalúan.


02 Establecer el estado del reloj:

El parámetro de entrada PDT no se evalúa. A partir de los demás parámetros de


entrada se forman los siguientes elementos del estado horario:

Valor de corrección incluido signo.

Hora de notificación.

Indicador de horario de verano/invierno.

La resolución de la hora se ajusta con arreglo a la resolución de la hora del a


CPU. El bit de fallo de sincronización del estado del reloj se describe con FALSE.

La hora permanece sin cambios.


03 Ajustar la hora y establecer el estado del reloj

265
Autómatas programables avanzado

Parámetros Declaración Tipo de datos Área de memoria Descripción

MODE IMPUT BYTE E, A, M, D, L const Modo de operación.

Valores posibles:
B#16#01: Ajustar la hora.
B#16#02: Establecer el estado
horario.
B#16#03: Ajustar la hora y
establecer el estado
horario.
PDT INPUT DT D, L Hora predeterminada.
CORR INPUT INT E, A, M, D, const Valor de corrección (en intervalos 0,5 h).

Valores posibles: de -24 hasta +26.


SUMMER IPUT BOOL E, A, M, D, con E, Identificación de horario de verano/
A, M, D, const st invierno:

0= horario de invierno.

1=horario de verano.
ANN_1 INPUT BOOL E, A, M, D, const Hora de notificación:

1= En el siguiente cambio de hora se


produce una conmutación de horario de
verano a horario de invierno y viceversa.
RET_VAL OUTPUT INT E, A, M, D, Código error.

Informaciones de error

Código de error (W#16#...) Explicación


0000 Ningún error.
8080 MODE fuera del margen de valores permitidos.
8081 CORR fuera del margen de valores permitidos (solo en
caso de MODE=B#16#02 o bien MODE=B#16#03).
8082 PDT fuera del margen de valores permitidos. La fecha
y/o la hora no son admisibles.
8xyy Información general sobre errores consulte evaluación
de errores con el parámetro de salida RET_VAL.

266
9: Bloques de Organización y “SFC’s” de Control y Gestión

9.11.  SFC’s para gestionar el contador de horas de


funcionamiento
Las CPU’s disponen de una cantidad específica de contadores de horas de
funcionamiento (véanse los datos técnicos de las CPU’s):

■■ Si la CPU tiene contadores de horas de funcionamiento de 16 bits, con las


SFC’s 2, 3 y 4 es posible ajustar, iniciar, parar y leer estos contadores de horas
de funcionamiento.

■■ Si la CPU tiene contadores de horas de funcionamiento de 32 bits, con la SFC


101 “RTM” es posible ajustar, iniciar, parar y leer estos contadores de horas de
funcionamiento.

Aplicación
Un contador de horas de funcionamiento puede emplearse para las más variadas
aplicaciones:

■■ Totalizar el tiempo de funcionamiento de la CPU

■■ Totalizar el tiempo de funcionamiento de equipos controlados.

Características del contador de horas de funcionamiento


Al poner en marcha el contador, éste comienza a contar a partir de su último estado de
contaje. Si se desea que comience a partir de otro valor, dicho valor se debe asignar
explícitamente (SFC 2 o SFC 101 con MODE=4).

Si se pone la CPU en STOP o si se para el contador de horas de funcionamiento,


la CPU “memoriza” el valor actual del contador. En caso de rearranque completo
(arranque en caliente) o de arranque en frío de la CPU, el contador debe arrancarse
otra vez (SFC 3 o SFC 101 con MODE=1).

Margen de valores
■■ CPU con contadores de horas de funcionamiento de 16 bits: de 0 a 32.767
horas.

■■ CPU con contadores de horas de funcionamiento de 32 bits: de 0 a (2 elevado


a 31) -1 horas = 2.147.483.647 horas.

267
Autómatas programables avanzado

9.12.  Gestión de contadores de horas de


funcionamiento con SFC 101 “RTM”
Con la SFC 101 “RTM” (run-time meter) se ajustan, inician, paran y leen los contadores
de horas de funcionamiento de 32 bits.

Para leer todos los contadores de horas de funcionamiento de 32 bits de una CPU, se
utiliza la SFC 51 “RDSYSST” con SZL_ID=W#16#0132 e INDEX=W#16#000B (para
los contadores de horas de funcionamiento 0 a 7), o bien INDEX=W#16#000C (para
los contadores de horas de funcionamiento 8 a 15).

Área de
Parámetro Declaración Tipo de datos Descripción
memoria
NR INPUT BYTE E, A, M, D, L, Numero del contador de horas de
Const funcionamiento (valores posibles:
0 a 15).
MODE INPUT BYTE E, A, M, D, L, Identificación de petición:
Const
0: ller (el estado se registra en CQ y
el valor actual en CV) Si el contador
de horas de funcionamiento
funciona más de (2 elevado a 31)
-1 horas, se para en el último valor
representable y muestra el mensaje
de error “Desbordamiento”.

1: iniciar (con él último estado del


contador).

2: parar.

4: ajustar (al valor indicado en PV).

5: ajustar (al valor indicado en PV)


e iniciar.

6: ajustar (al valor indicado en PV)


y parar.
PV INPUT DINT E, A, M, D, L, Valor nuevo para el contador de
Const horas de funcionamiento.
RET_VAL OUTPUT INT E, A, M, D, L Si durante el procesamiento de la
función aparece un error el valor
de respuesta contiene un código
de error.
CQ OUTPUT BOOL E, A, M, D, L Estado del contador de horas de
funcionamiento (1: funciona).
CV OUTPUT DINT E, A, M, D, L Valor actual del contador de horas
de funcionamiento.

268
9: Bloques de Organización y “SFC’s” de Control y Gestión

Compatibilidad con programas desarrollados para una CPU con contadores de horas
de funcionamiento de 16 bits.

Los contadores de horas de funcionamiento de 32 bits también pueden utilizarse con


las SFC’s 2 “SET_RTM”, 3 “CTRL_RTM” y 4 “READ_RTM”.

De todas formas, en este caso los contadores de horas de funcionamiento de 32 bits


reaccionan como si fueran de 16 bits (rango de valores de 0 a 32767 horas).

En el extracto de lista parcial con el SZL-ID W#16#0132 y el índice W#16#0008


aparecen los contadores de horas de funcionamiento de 32 bits 0 a 7 como si fueran
de 16 bits. Con ellos puede seguir empleando programas desarrollados para una CPU
con contadores de horas de funcionamiento de 16 bits y que utilizan el extracto de
lista parcial con el SZL-ID W#16#0132 y el índice W#16#0008.

Informaciones de error

Código de error (W#16#...) Explicación


0000 Ningún error.
8080 Número erróneo del contador de horas de funcionamiento.
8081 Se ha transferido un valor negativo al parámetro PV.
8082 Desbordamiento del contador de horas de funcionamiento.
8091 El parámetro de entrada MODE contiene un valor no válido.
8xyy Información general sobre errores, consulte, evaluación de errores
con el parámetro de salida RET_VAL.

269
Autómatas programables avanzado

9.13.  Ajuste de contadores de horas de funcionamiento


con SFC 2 “SET_RTM”
Con la SFC 2 “SET_RTM” (set run-time meter) se ajusta el contador de horas de
funcionamiento de la CPU a un valor preestablecido. Es posible ajustar una cantidad
específica de contadores por cada CPU.

Parámetro Declaración Tipo de datos Área de memoria Descripción


NR INPUT BYTE E, A, M. D. L const La entrada NR contiene el
número del contador de horas
de funcionamiento que se desea
ajustar. Valores posibles: 0 hasta
7.
PV INPUT INT E, A, M, D, L, const La entrada PV contiene el ajuste
para el contador de horas de
funcionamiento.
RET_VAL OUTPUT INT E, A, M, D ,L Si ocurre un error al procesar
su función, el valor de retorno
contiene un código de error.

Informaciones de error

Código de error (W#16#...) Explicación


0000 No hay error.
8080 Número del contador de horas de funciona-
miento es erróneo.
8081 Al parámetro PV se ha asignado un número
negativo.
8xyy Información general sobre errores, consul-
te evaluación de errores con el parámetro
RET_VAL.

270
9: Bloques de Organización y “SFC’s” de Control y Gestión

9.14.  Arrancar y parar el contador de horas de


funcionamiento con SFC 3 “CTRL_RTM”
Con la SFC 3 “CTRL_RTM” (control run-time meter) se puede arrancar o parar un
contador de horas de funcionamiento.

Tipos de Área de
Parámetro Declaración Descripción
datos memoria
NR INPUT BYTE E, A, M, D, L La entrada NR contiene el número del
Const contador de horas de funcionamiento
que se desea arrancar o parar. Valores
posibles: 0 hasta 7.
S INPUT BOOL E, A, M, D, L La entrada S arranca o para el contador
Const de horas de funcionamiento. El contador
se para poniendo el estado de la señal a
“0” y se arranca poniendo la señal a “1”
RET_VAL OUTPUT INT E, A, M, D, L Si ocurre un error al procesar la función
el valor de retorno contiene un código de
error.

Informaciones de error

Código de error (W#16#...) Explicación


0000 No hay error.
8080 Número del contador de horas de funcionamiento es
erróneo.
8xyy Información general sobre errores, consulte evalua-
ción de errores con el parámetro de salida RET_VAL.

271
Autómatas programables avanzado

9.15.  Leer el contador de horas de funcionamiento con


el SFC 4 “READ_RTM”
Con la SFC 4 “READ_RTM” (read run-time meter) se lee el contador de horas de
funcionamiento. La SFC 4 suministra como datos de salida, la cantidad actual de
horas de funcionamiento y el estado del contador, es decir, “parado” o “contando”.

Si el contador marcha durante más de 32767 horas, se queda parado en 32767 y


transmite el mensaje de error “Desbordamiento”.

Tipo de Área de
Parámetro Declaración Descripción
datos memoria
NR INPUT BYTE E, A, M, D, L. La entrada NR contiene el número del
Const contador de horas de funcionamiento que
se desea arrancar o parar. Posibles valores
0 hasta 7.
CQ OUTPUT BOOL E, A, M, D, L. La salida CQ indica si el contador de horas
de funcionamiento está en marcha o
parado. El estado de señal “0” indica que el
contador está parado, mientras que el “1”
señaliza que está en marcha.
CV OUTPUT INT E, A, M, D, L. La salida CV emite el valor actual del
contador.
RET_VAL OUTPUT INT E, A, M, D, L. Si ocurre un error el valor actual de función
el valor de retorno contiene un código de
error.

Informaciones de error

Código de error
Explicación
(W#16#...)
0000 No hay error.
8080 Número del contador de horas de funcionamiento es erróneo.
8081 Desbordamiento del contador de horas de funcionamiento.
8xyy Información general sobre errores, consulte evaluación de errores con el
parámetro de salida RET_VAL.

272
9: Bloques de Organización y “SFC’s” de Control y Gestión

9.16.  Leer el cronómetro del sistema con SFC 64


“TIME_TCK”
Con la SFC 64 “TIME_TCK” (time tick) se puede leer el cronómetro del sistema de la
CPU. El cronómetro del sistema es un “contador cronométrico” que cuenta desde
0 hasta máximo 2147483647 ms. Si se sobrepasa el cronómetro del sistema, se
comienza a contar desde 0.

En el S7-400 y la CPU318, la base y la precisión del cronómetro del sistema tienen un


valor de 1 ms, en todas las demás CPU del S7-300 el valor es de 10 ms. El cronómetro
del sistema es influenciado solamente por los estados operativos de la CPU.

Aplicación
El cronómetro del sistema se puede utilizar por ejemplo para cronometrar operaciones
formando la diferencia de los valores de retorno de dos llamadas sucesivas de la SFC
64.

Cronómetro del sistema y estados operativos

Estado operativo Cronómetro del sistema…


Arranque … se actualiza continuamente
RUN
STOP … se para y conserva el valor actual
Rearranque (no es S7-300 ni S7-400H) … continua con el valor que fue memorizado al
pasar a STOP
Rearranque completo (arranque en caliente) y … se borra y comienza de nuevo a partir de “0”
arranque en frío

Parámetro Declaración Tipo de datos Área de memoria Descripción


RET_VAL OUTPUT TIME E, A, M, D, L El parámetro RET_VAL
contiene el cronómetro
del sistema,
comprendido entre 0 a
231 -1ms.

Informaciones de error
La SFC 64 “TIME_TCK” no ofrece informaciones de error.

273
Autómatas programables avanzado

9.17.  SFC’s para gestionar alarmas horarias


Una alarma horaria es la causa de la llamada controlada por tiempo de un
OB de alarma horaria (OB 10 a OB 17).

Condiciones requeridas para la llamada


Para que el sistema operativo pueda llamar un OB de alarma horaria es necesario que
se cumplan las siguientes condiciones:

■■ El OB de alarma horaria debe estar parametrizado (fecha y hora de arranque,


ejecución):
□□ con STEP 7.
□□ con la SFC 28 “SET_TINT” en el programa de usuario.
■■ El OB de alarma horaria debe estar activado
□□ con STEP 7.

□□ con la SFC 30 “ACT_TINT” en el programa de usuario.

■■ El OB de alarma horaria no debe haber sido abandonado con STEP 7.


■■ El OB de alarma horaria debe estar presente en la CPU.
■■ Si el ajuste se realiza mediante la SFC 30 “ACT_TINT”, no deben haber
transcurrido la fecha y la hora de arranque en caso de ejecución única; en caso
de ejecución periódica, el OB de alarma horaria se llama tras el próximo período
transcurrido (momento de arranque + múltiplo del período).

Sugerencia
La alarma horaria se puede parametrizar con STEP 7 y activar en el programa de
usuario (SFC 30 “ACT_TINT”).

Finalidad de las SFC 28 a SFC 31


Las funciones del sistema SFC 28 a SFC 31, que se describen a continuación, se
utilizan para alarmas horarias:

■■ Ajustar (SFC 28 “SET_TINT”).


■■ Anular (SFC 29 “CAN_TINT”).
■■ Activar (SFC 30 “ACT_TINT”).
■■ Consultar (SFC 31 “QRY_TINT”).

274
9: Bloques de Organización y “SFC’s” de Control y Gestión

9.18.  Características de los SFC’s 28 a 31


La tabla siguiente muestra varias situaciones y sus efectos sobre la alarma horaria.

Si… Entonces…
Se ajusta de nuevo una alarma horaria (llamada Se anula automáticamente la alarma horaria vigente.
de la SFC 28: SET_TINT)
Se anula la alarma horaria (llamada de la SFC 28, Se borran la fecha y la hora de arranque. Por consi-
CANT_TINT) guiente, la alarma horaria se debe ajustar nuevamen-
te antes de activarla
El OB de alarma horaria no existe en el momento Se operan automáticamente un error de prioridad; es
de efectuar la llamada decir, el sistema iparativo se llama el OB 85.

Si el OB 85 no existe, la CPU pasa al estado opera-


tivo STOP.
Se sincronizan el reloj o se adelanta la hora
Si se salta la decha y la hora de arranque al adelan-
tar el reloj:

El sistema operativo llama al OB801.

A continuación del OB 80 se llama a cada OB de


alarma horaria saltando (una vez, independientemen-
te de la cantidad de períodos saltados) si no fue ya
manipulado en el OB 802.

Si el OB80 no existe la CPU para al estado operativo


STOP.
Si se llaman OB de alarma horaria en el margen de
tiempo atrasado, éstos no se vuelven a llamar al
pasar nuevamente dicho tiempo.
Se sincroniza el reloj o se atrasa la hora CPU’s S7-400 y CPU 318:

Cuando se han llamado Ob’s de alarma horaria en


la zona horaria atrasada no se vuelven a llamar al
volver a transcurrir este tiempo.

CPU’s S7300. Se ejecutan los OB’s de alarma horaria


afectados.

Comportamiento en caso de rearranque completo (arranque en caliente)

Al efectuar un rearranque completo (arranque en caliente), se borran todas las alarmas


horarias ajustadas con las SFC’s en el programa de usuario.

En este caso siguen vigentes los parámetros ajustados con STEP 7.

275
Autómatas programables avanzado

Ejecución del OB de alarma horaria:

La tabla siguiente muestra los diferentes efectos del parámetro “Ejecución”. Este
parámetro se ajusta con STEP 7 o con la SFC 28 “SET_TINT” (parámetro de entrada
PERIOD).

Ejecución del OB de alarma horaria Reacción


Ninguna (solo se puede ajustar con STEP 7) El OB de alarma horaria no se ejecuta, incluso aun-
que esté contenido en la CPU.

Se puede reparametrizar en el programa de usuario;


es decir, ajustar alarma horaria (SFC 28; SET_TINT).
Única La alarma horaria se anula después de llamar el OB
de alarma horaria y se puede ajustar y activar de
nuevo.
Periódica (cada minuto, cada hora, diaria, Si la fecha y la hora de arranque han transcurrido
semanal, mensual, anual) al efectuar la activación, el OB de alarma horaria
interrumpe el programa cíclico en el instante “Fecha/
hora de arranque + múltiplo del período ajustado”.

En casos muy aislados puede ocurrir que el OB


de alarma horaria esté ejecutándose al efectuar la
siguiente llamada.

Consecuencias:

Error de tiempo (sistema operativo llama OB 80 si


el OB 80 no existe la CPU para al estado operativo
STOP.

El OB de alarma horaria se procesa más tarde.

276
9: Bloques de Organización y “SFC’s” de Control y Gestión

9.19.  Ajustar una alarma horaria con el SFC 28 “SET_


TINT”
Con la función del sistema SFC 28 “SET_TINT” (set time-of-day interrupt) se pueden
ajustar la fecha y la hora de arranque de los bloques de organización de alarma
horaria. De la hora de arranque que se haya especificado se ignoran los segundos y
los milisegundos y se ponen a cero.

Tipo de Área de
Parámetro Declaración Descripción
datos memoria
OB_NR INPUT INT E,A,M,D,L Número del OB que se activa en el instante
Const SDT (fecha y hora de arranque) + múltiplo del
periodo PERIOD (OB10 a OB17).
SDT INPUT DT D,L. Fecha y hora de arranque:

De la hora de arranque que se haya


especificado se ignoran los segundos y los
milisegundos y se ponen a cero.

Si desea definir arranque mensual de un OB


de alarma horaria, para la fecha de arranque
sólo pueden indicarse los días 1, 2… 28.
PERIOD INPUT WORD E,A,M,D,L Periocidad desde el instante SDT:
Const
W#16#0000= una vez.

W#16#0201= cada minuto.

W#16#0401= cada hora.

W#16#1001= diaria.

W#16#1201= semanal.

W#16#1401= mensual.

W#16#1801= anual.

W#16#2001= al final de mes.


RET_VAL OUTPUT INT E,A,M,D,L Si ocurre un error al procesar la función el
parámetro actual de RET_VAL contiene un
código de error.

277
Autómatas programables avanzado

Informaciones de error

Código de error (W#16#...) Descripción


0000 No ha ocurrido ningún error.
8090 Parámetro OB_NR erróneo.
8091 Parámetro SDT erróneo.
8092 Parámetro PERIOD erróneo.
80ª1 El instante de arranque ajustado ya ha pasado.
8xyy Información general sobre errores, consulte evalua-
ción de errores con el parámetro de salida RET_VAL.

278
9: Bloques de Organización y “SFC’s” de Control y Gestión

9.20.  Anular una alarma horaria con el SFC 29 “CAN_


TINT”
Con la función del sistema SFC 29 “CAN_TINT” (cancel time-of-day interrupt) se
pueden borrar la fecha y la hora de arranque de un bloque de organización de alarma
horaria indicado.

Parámetros

Parámetro Declaración Tipo de datos Área de memoria Descripción


OB_NR INPUT INT E,A,M,D,L Const Número del OB cuya fecha
y hora de arranque se han
de borrar (OB10 a OB17).
RET_VAL OUTPUT INT E,A,M,D,L Si ocurre un error al
procesar la función el
parámetro actual de RET_
VAL contiene un código de
error.

Informaciones de error

Código de error (W#16#...) Descripción


0000 No ha ocurrido ningún error.
8090 Parámetro OB_NR erróneo.
80ª0 No se han definido la fecha y hora de arranque para
el OB de alarma horaria indicado.
8xyy Información general sobre errores, consulte evalua-
ción de errores con el parámetro de salida RET_VAL.

279
Autómatas programables avanzado

9.21.  Activar una alarma horaria con el SFC 30 “ACT_


TINT”
Con la función del sistema SFC 30 “ACT_TINT” (activate time-of-day interrupt) se
puede activar un bloque de organización de alarma horaria.

Área de
Parámetro Declaración Tipo de datos Descripción
memoria
OB_NR INPUT INT E,A,M,D,L, Número del OB que se desea activar
Const (habilitar) (OB10 a OB17).
RET_VAL OUTPUT INT E,A,M,D,L Si ocurre un error al procesar la
función, el parámetro actual RET_VAL
contiene un código de error.

Informaciones de error

Código de error (W#16#...) Descripción


0000 No ha ocurrido ningún error.
8090 Parámetro OB_NR erróneo.
80A0 No se ha ajustado la fecha y la hora de arranque
para le OB de alarma horaria correspondiente.
80A1 El tiempo activado se encuentra en el pasado; el
error ocurre solamente en caso de ejecución única.
8xyy Información general sobre errores, consulte
evaluación de errores con el parámetro de salida
RET_VAL.

280
9: Bloques de Organización y “SFC’s” de Control y Gestión

9.22.  Consultar una alarma horaria con el SFC 31


“QRY_TINT”
Con la función del sistema SFC 31 “QRY_TINT” (query time-of-day interrupt) se puede
consultar el estado de un módulo de organización de alarma horaria con el parámetro
de salida STATUS.

Parámetro Declaración Tipo de datos Área de memoria Descripción


OB_NR INPUT INT E,A,M,D,L, Const Número del OB cuyo estado
se ha de consultar (OB10 a
OB17).
RET_VAL OUTPUT INT E,A,M,D,L Si ocurre un error al procesar
la función el parámetro actual
de RET_VAL contiene un
código de error.
STATUS OUTPUT WORD E,A,M,D,L Estado de la alarma horaria,
ver tabla siguiente.

Parámetro de salida STATUS

Bit Valor Significado


0 0 Alarma horaria habilitada por el sistema operativo
1 0 No se rechazan nuevas alarmas horarias
2 0 Alarma horaria sin activar o transcurrida
3 - -
4 0 OB de alarma horaria sin cargar
5 0 La ejecución del OB de alarma horaria no está bloqueada por una función de test en
curso
6 0 La hora patrón es la base para la alarma horaria
1 La hora local es la base para la alarma horaria

Informaciones de error

Código de error (W#16#...) Descripción


0000 No ha ocurrido ningún error
8090 Parámetro OB_NR erróneo
8xyy Información general sobre errores, consulte evalua-
ción de errores con el parámetro de salida RET_VAL

281
Autómatas programables avanzado

9.23.  Listas de SFC’s


Lista de todas las SFC’s ordenadas por números:

Nƒ Abreviatura Función
SFC 0 SET_CLK Ajustar la hora.
SFC 1 READ_CLK Leer la hora.
SFC 2 SET_RTM Ajustar el contador de horas de funcionamiento.
SFC 3 CTRL_RTM Arrancar/parar el contador de horas de funcionamiento.
SFC 4 READ_RTM Leer el contador de horas de funcionamiento.
SFC 5 GADR_LGC Determinar la dirección base lógica de un módulo.
SFC 6 RD_SINFO Leer la información de arranque del OB actual.
SFC 7 DP_PRAL Disparar una alarma de proceso en el maestro DP.
SFC 9 EN_MSG Habilitar avisos de bloque, de símbolo y del sistema de control.
SFC 10 DIS_MSG Bloquear avisos de bloque, de símbolo y del sistema de control.
SFC 11 DPSYC_FR Sincronizar grupos de esclavos DP.
SFC 12 D_ACT_DP Activar y desactivar esclavos DP.
SFC 13 DPNRM_DG Leer los datos de diagnóstico (diagnostico de esclavo) de un esclavo DP.
SFC 14 DPRD_DAT Leer los datos coherentemente de un esclavo normalizado DP.
SFC 15 DPWR_DAT Escribir datos coherentemente en un esclavo normalizado DP.
SFC 17 ALARM_SQ Generar avisos de bloque acusable.
SFC 18 ALARM:S Generar avisos de bloque siempre acusados.
SFC 19 ALARM_SC Determinación del estado de acuse del último aviso entrante.
SFC 20 BLKMOV Copiar variable.
SFC 21 FILL Inicializar campo.
SFC 22 CREAT_DB Crear bloque de datos.
SFC 23 DEL_DB Borrar un bloque de datos.
SFC 24 TEST_DB Comprobar un bloque de datos.
SFC 25 COMPRESS Comprimir la memoria de usuario.
SFC 26 UPDAT_PI Actualizar la imagen de proceso de las entradas.
SFC 27 UPDAT_PO Actualizar las salidas en los módulos de periferia.
SFC 28 SET_TINT Ajustar alarma horaria.
SFC 29 CAN_TINT Anular alarma horaria.
SFC 30 ACT_TINT Activar alarma horaria.
SFC 31 QRY_TINT Consultar alarma horaria.
SFC 32 SRT_DINT Arrancar alarma horaria.

282
9: Bloques de Organización y “SFC’s” de Control y Gestión

Nƒ Abreviatura Función
SFC 33 CAN_DINT Anular alarma horaria.
SFC34 QRY_DINT Consultar estado de alarma de retardo.
SFC 35 MP_ALM Disparar alarma de multiprocesamiento.
SFC 36 MSK_FLT Enmascarar evento de error síncrono.
SFC 37 DMSK_FLT Desenmascarar evento de error síncrono.
SFC 38 READ_ERR Leer registro de estado de eventos.
SFC 39 DIS_IRT Bloquear el tratamiento de nuevos eventos de alarma y de error asíncrono.
SFC 40 Habilitar el tratamiento de eventos de alarma y de error asíncrono de mayor
EN_IRT
prioridad.
SFC 41 Retardar el tratamiento de eventos de mayor prioridad de alarma y de error
DIS_AIRT
asíncrono.
SFC 42 Habilitar el tratamiento de eventos de alarma y de error asíncrono de mayor
EN_AIRT
prioridad.
SFC 43 RE_TRIGR Redisparar el tiempo de ciclo de vigilancia.
SFC 44 REPL_VAL Transferir valor de sustitución a ACU 1.
SFC 46 STP Poner la CPU en STOP.
SFC 47 WAIT Retardar el tratamiento.
SFC 48 SNC_RTCB Sincronizar de relojes esclavos.
SFC 49 LGC_GADR Determinar el slot correspondiente a una dirección lógica.
SFC 50 RD_LGADR Determinar todas las direcciones lógicas de un módulo.
SFC 51 RDSYSST Leer lista de estado del sistema.
SFC 52 WR_USMSG Escribir eventos de diagnósticos de usuario en el búfer de diagnóstico.
SFC 54 RD_DPARM Leer parámetros predefinidos.
SFC 55 WR_PARM Escribir parámetros dinámicos.
SFC 56 WR_DPARM Escribir parámetros predefinidos.
SFC 57 PARM_MOD Parametrizar módulo.
SFC 58 WR_REC Escribir el registro en la periferia.
SFC 59 RD_REC Leer el registro en la periferia.
SFC 60 GD_SND Emisión programada de un paquete GD.
SFC 61 GD_RCV Recepción programada de un paquete GD recibido.
SFC 62 Consultar el estado del enlace asociado a la instancia de SFBx de
CONTROL
comunicación.
SFC 63 AB_CALL Llamar bloque ensamblador.
SFC 64 TIME_TCK Time Tick – Leer el cronómetro del sistema.
SFC 65 X_SEND Enviar datos a un interlocutor fuera del equipo S7 propio.
SFC 66 X_RCV Recibir datos de un interlocutor fuera del equipo S7 propio.
SFC 67 X_GET Leer datos de un interlocutor fuera del equipo S7 propio.
SFC 68 X_PUT Escribir datos en un interlocutor fuera del equipo S7 propio.

283
Autómatas programables avanzado

Nƒ Abreviatura Función
SFC 69 Interrumpir un enlace existente con un interlocutor fuera del equipo S7
X_ABORT
propio.
SFC 70 GEO_LOG Determinar la dirección inicial del módulo.
SFC 71 LOG_GEO Determinar el slot que corresponde a una dirección lógica.
SFC 72 I_GET Leer datos de un interlocutor dentro del propio equipo S7.
SFC 73 I_PUT Escribir datos en un interlocutor dentro del equipo S7 propio.
SFC 74 Interrumpir un enlace existente con un interlocutor dentro del equipo S7
I_ABORT
propio.
SFC 78 OB_RT Averiguar tiempo de ejecución de programa OB.
SFC 79 SET Activar mapa de bits en el área de periferia.
SFC 80 RSET Desactivar mapa de bits en el área de periferia.
SFC 81 UBLKMOV Copiar una variable ininterrumpible.
SFC 82 CREA_DBL Crear un bloque de datos en la memoria de carga.
SFC 83 READ_DBL Leer un bloque de datos residente en la memoria de carga.
SFC 84 WRIT_DBL Escribir en un bloque de datos residente en la memoria de carga.
SFC 85 CREA_DB Crear un bloque de datos.
SFC 87 C_DIAG Determinar el estado actual de los enlaces.
SFC 90 H_CTRL Influir en los procesos de los sistemas H.
SFC
100 SET:CLKS Ajustar la fecha y hora.

SFC
101 RTM Gestionar contadores de horas de funcionamiento.

SFC
102 RD_DPARA Leer parámetros predefinidos.

SFC
103 DP_TOPOL Determinar la topología de bus en un sistema maestro DP.

SFC
104 CiR Forzar el proceso CiR.

SFC
105 READ_SI Leer recursos de sistema ocupados de forma dinámica.

SFC
106 DEL_SI Habilitar recursos de sistema ocupados de forma dinámica.

SFC
107 ALARM_DQ Crear avisos de boque acusables.

SFC
108 ALARM_D Crear avisos de bloque siempre acusados.

SFC Actualizar entradas de la interfaz de programa de usuario de los


112 PN_IN
componentes PROFInet.
SFC Actualizar salidas de la interfaz de programa de usuario de los componentes
113 PN_OUT
PROFInet.

284
9: Bloques de Organización y “SFC’s” de Control y Gestión

Nƒ Abreviatura Función
SFC
114 PN_DP Actualizar interconexiones DP.

SFC
126 SYNC_PI Actualizar sincrónicamente la imagen de proceso parcial de las entradas.

SFC
127 SYNC_PO Actualizar sincrónicamente las imágenes del proceso parcial de las salidas.

285
Autómatas programables avanzado

9.24.  Listas de SFB’s


Lista de todos los SFB’s ordenados por números:

Nƒ Abreviatura Función
SFB 0 CTU Contaje adelante.
SFB 1 CTD Contaje atrás.
SFB 2 CTUD Contaje adelante y atrás.
SFB 3 TP Generar un impulso.
SFB 4 TON Generar un retardo a la conexión.
SFB 5 TOF Generar un retardo a la desconexión.
SFB 8 USEND Emisión no coordinada de datos.
SFB 9 URCV Recepción no coordinada de datos.
SFB 12 BSEND Emisión de datos por paquetes.
SFB 13 BRCV Recepción de datos por paquetes.
SFB 14 GET Leer datos de una CPU remota.
SFB 15 PUT Escribir datos en una CPU remota.
SFB 16 PRINT Enviar datos a una impresora.
SFB 19 START Realizar un rearranque completo (arranque en caliente) o un arranque en
frío en un equipo remoto.
SFB 20 STOP Pasar a STOP un equipo remoto.
SFB 21 RESUME Efectuar un rearranque en un equipo remoto.
SFB 22 STATUS Consultar un estado de un equipo remoto.
SFB 23 USTATUS Recibir el estado de un equipo remoto.
SFB 29 HS_COUNT Contador (high Speedy counter, integrated function).
SFB 30 FREQ_MES Frecuencímetro (frequency meter, integrated function).
SFB 31 NOTIFY_8P Generar avisos de bloques sin indicación de acuse.
SFB 32 DRUM Realizar un mecanismo de movimiento intermitente.
SFB 33 ALARM Generar avisos de bloque sin indicación de acuse.
SFB 34 ALARM_8 Generar avisos de bloque sin valores asociados para ocho señales.
SFB 35 ALARM_8P Generar avisos de bloque con valores asociados para ocho señales.
SFB 36 NOTIFY General avisos de bloque sin indicación de acuse.
SFB 37 AR_SEND Enviar datos de archivado.
SFB 38 HSC_A_BX Contador A/B (integrated function).
SFB 39 POS ‘ Posicionamiento (integrated function).
SFB 41 CONT_C1) Regulación continúa.
SFB 42 CONT_S 1)
Regulación discontinua.

286
9: Bloques de Organización y “SFC’s” de Control y Gestión

Nƒ Abreviatura Función
SFB 43 PULSEGEN1) Formación de impulsos.
SFB 44 ANALOG 2)
Posicionar con salida analógica.
SFB 46 DIGITAL2) Posicionar con salida digital.
SFB 47 COUNT 2)
Forzar contador.
SFB 48 FREQUENC2) Forzar frecuencímetro.
SFB 49 PULSE2) Forzar modulación de ancho de pulso.
SFB 52 RDREC Leer registro.
SFB 53 WRREC Escribir registro.
SFB 54 RALRM Recibir alarma.
SFB 60 SEND_PTP2) Enviar datos (ASCII, 3964 (R)).
SFB 61 RCV_PTP ) 2
Recibir datos (ASCII, 3964 (R)).
SFB 62 RES_RCVB2) Borrar búfer de recepción (ASCII, 3964 (R)).
SFB 63 SEND_RK ) 2
Enviar datos (RK 512).
SFB 64 FETCH_RK2) Recibir datos (RK 512).
SFB 65 SERVE_RK ) 2
Recibir y preparar datos (RK 512).
SFB 75 SALRM Enviar alarma al maestro DP.
SFB 81 RD_DPAR Leer parámetros predefinidos.

287
9: Bloques de Organización y “SFC’s” de Control y Gestión

RESUMEN

La mayor parte de los sistemas de control industriales son sistemas en lazo cerrado y
ello entraña un cierto peligro de oscilación o de excesiva lentitud de respuesta, si no
se elige convenientemente el regulador acorde con las características de la planta que
se desea regular.


La acción proporcional en un sistema en lazo cerrado permite acercar la salida al valor
de consigna, pero deja siempre un error permanente sin corregir, tanto mayor cuanto
menor es la constante proporcional.


Los reguladores comerciales o aquellos incorporados a los autómatas programables
suelen ser reguladores de propósito general que permiten superponer los tres tipos de
acciones básicas.


Algunos procesos complejos requerirán, pues, un estudio más profundo para poder
obtener dicho regulador óptimo.

■ (Footnotes)

1. En la información de eventos de arranque del OB 80 está codificado qué OB de alarma


horaria no son llamados al adelantar el reloj. La hora registrada en la información de
evento de arranque corresponde al tiempo adelantado.
2. La hora registrada en la información de evento de arranque del OB de alarma horaria
rellanado corresponde a la hora de arranque de la primera alarma horaria saltada

289