Automatas Programables Avanzado

  • Uploaded by: Luis Fernando
  • 0
  • 0
  • February 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Automatas Programables Avanzado as PDF for free.

More details

  • Words: 42,758
  • Pages: 290
Loading documents preview...
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

1 UNIDAD DIDÁCTICA

1

Autómatas programables avanzado 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 relaciones entre ellas, y la secuencia que deben seguir. El software se clasifica en dos grandes grupos: Esta representación puede ser: ■■ Sistemas operativos, residentes en el propio autómata, ■■ Algebraica: instrucciones literales. que se encargan de establecer las secuencias de 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 uno de los componentes que aparecen en el modelo. ■■ Software de edición/depuración de programas, que 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:

AQUÍ:

U E 1.0

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

SPA AQUI

//se salta de forma incondicional a la línea con meta "AQUÍ" , con independencia del estado de E1.0

NOP 0

//esta línea no se ejecuta nunca (es saltada)

U E 2.0

//aquí continúa la ejecución del programa

= A 3.0

//se introduce el resultado en la salida 3.0 en función del estado de 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 INK1: = M1.0 INK2: = EW2 OFF: = AW4

//se llama la función FC80 //INK1 (p. formal) es asignado a M 1.0 (p. actual) //INK2 (p. formal) es asignado a EW2 (p. actual) //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 U E0.0 MCR( MCR U E0.1 = A4.0 U E0.2 S A4.1 U E0.3 R A4.1 L MW20 T AW10 )MCR MCRD U E1.0 = A5.0

28

//Se activa el área MCR //Se consulta //Se inicia el área MCR:Si RLO=1 -->MCR ON Si RLO=0 --> OFF //Si MCR OFF --> A4.0=0 sin considerar E0.1 //Si MCR OFF --> Mantiene el valor de A4.1

//Si MCR OFF --> Se transfiere 0 a AW10 //Se finaliza área MCR //Se desactiva área MCR //Como está fuera del área MCR no depende del bir MCR

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

2 UNIDAD DIDÁCTICA

2

Autómatas programables avanzado 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 asociadas:

■■ Textos programados escritos en alguna unidad de

■■ Condiciones de operación, que definen la habilitación y

■■ Variables numéricas más frecuente en: ■■ Registros internos. ■■ Temporizadores o contadores (valores actuales). ■■ Canales de datos de 8, 16 ó 32 bits de entrada o

control del bloque.

■■ Operandos de función, sobre los que actúan las sentencias preprogramadas en el bloque funcional.

■■ Salidas asociadas, cuyo estado depende de la ejecución de la función del bloque.

memoria o dispositivo exterior.

salida (por ejemplo, datos binarios resultantes de la 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 MOD T MD24

40

//Almacena el cociente //Almacena el resto

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 → 8.7 → –8.7 →

44

RND = 8 TRUNC = 8 RND = 9 TRUNC = 8 RND = –9 TRUNC = –8

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 ” 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 ” Desplaza la palabra baja (bits 0 al 15) de ACU1 nº bits (015) 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 ” 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 ” 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 ” Desplaza la palabra baja (bits 0 al 15) de ACU1 nº bits (015) 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 ” 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 ” 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 ” 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 UNIDAD DIDÁCTICA

3

Autómatas programables avanzado 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 configuración hardware de la unidad de control. ■■ Adquisición de entradas.

■■ Escrutinio del programa (de la tarea). ■■ Actualización de salidas. ■■ Servicio a periféricos o terminales de explotación.

La programación es estructurada cuando la tarea de control está dividida en subprogramas o módulos que se corresponden con distintas funciones dentro del mando general, y cuya ejecución puede ser ordenada varias veces dentro de un mismo ciclo de operación del autómata.

La tarea constituye una entidad de programación completa, con sus propias entradas, salidas, variables En este capítulo se verán las diferentes estructuras internas y sentencias de control. 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 (DBs de instancia)

Al llamarse a un FB/SFB, los DBs de instancia se asocian al bloque.

Bloques de datos (DB)

Los DBs son áreas de datos para almacenar los datos de usuario.

Los DBs de instancia se generan automáticamente al efectuarse la compilación.

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

0.0

in

valor1

WORD

2.0

out

tiempo

S5TIME

4.0

in_out

memoria

BOOL

0.0

temp.

fecha

DATE

Valor inicial

Comentario

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 este tipo de variables y sólo para bloques FB.

60

permiten

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

0.0

in

valor1

INT

2.0

in

valor2

INT

4.0

out

resultado

INT

Valor inicial

Comentario

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

0.0

STRUCT

=0.0

END_STRUCT

Valor inicial

Comentario

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:

66

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.

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

//Abre el DB1 //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 L DBW8 AUF DB7 T DBW6

//Abre DB5 //Carga en ACU1 la palabra 8 del DB5 //Abre DB5 //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

0.0

Valor inicial

Comentario

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 L *I T

Datos.valor2 Datos.valor1 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

0.0 +0.0

Tipo

Valor inicial Comentario

STRUCT 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

74

Num de motor:= MW100

(Parámetros actuales)

Velocidad:= MW110

(Parámetros actuales)

Potencia:= A0.1

(Parámetros actuales)

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

S5TIME

S5T#OMS

in out in_out 0.0

stat temp.

76

tiempo

Comentario

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 “tiempo”, 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 UNIDAD DIDÁCTICA

4

Autómatas programables avanzado 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 operador-máquina y una comunicación entre máquina y el sistema de control. Para el sistema de control, y más concretamente si éste es un autómata, esto se traduce en que éste reciba una serie de señales externas, unas de mando y otras de realimentación que, en conjunto, constituyen las entradas. Por otro lado, el operador necesita conocer algunos datos sobre la marcha del proceso y los accionamientos necesitan recibir las órdenes oportunas para controlarlo. 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

La característica esencial del autómata programable es su capacidad de comunicación con un entorno exterior en el que se manejan señales de potencia, con tensiones y corrientes de nivel industrial, aunque suelen disponer también de buses de comunicación digital parecidos a los que normalmente incorporan los sistemas informáticos. Un autómata consta de circuitos de interfaz de E/S muy potentes, que permiten conectar directamente con los sensores y accionamientos del proceso.

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: OUT =

(IN − K1)x (HI _ LIM − LO _ LIM) + 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

Litros =

(10000 − 0 )x (1000 − 0 ) + 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: OUT =

IN − LO _ LIM)x (K 2 − K1) + 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 UNIDAD DIDÁCTICA

5

Autómatas programables avanzado

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 secuenciales que ejecutan correlativamente las instrucciones indicadas en el programa de usuario almacenando en su memoria, generando unas órdenes o señales de mando a partir de las señales de entrada leídas de la planta: al detectarse cambios en las señales, el autómata reacciona según el programa hasta obtener las órdenes de salida necesarias. Esta secuencia se ejecuta continuamente para conseguir el control actualizado del proceso. La secuencia de operación del autómata se puede dividir en tres fases principales:

El autómata realiza también una serie de acciones comunes que garantizan la seguridad en el funcionamiento, como son los chequeos de memoria y de CPU, comprobación del “watchdog” o reloj de guarda, etc. Además, y eventualmente, establece comunicación con periféricos exteriores, por ejemplo para volcado de datos en impresora, comunicación con otros autómatas u ordenadores, conexión con la unidad de programación, etc.

Todas estas acciones se van repitiendo periódicamente, 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á determinante cuando el autómata pretenda controlar ■■ Escritura de señales en la interfaz de salidas. 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 especificado.

momento

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 UNIDAD DIDÁCTICA

6

Autómatas programables avanzado 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 electrónico de control con un cableado interno independiente del proceso a controlar, el cual se adapta a dicho proceso mediante un programa específico, que contiene la secuencia de operaciones a realizar.

El autómata gobierna las señales de salida según el programa de control previamente almacenado en una memoria, a partir del estado de las señales de entrada.

El autómata se configura alrededor de una unidad central o de control que, unida por medio de buses 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 T U =

P#4.1 //Carga el puntero en ACU1 MD2 //Transfiere el resultado a una doble palabra 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 T MD2 L EB[MD2]

//Carga el puntero en ACU1 //Transfiere el resultado a una doble palabra //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 L P#0.7 +D

/Carga puntero //Carga puntero //Los sumas: 124.2 + 0.7 =

L P#124.2 L 3 +D

//Carga puntero //Suma 3 bits //Resultado: P#124.5

P#125.1

□□ 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 + 1.1 = 9.8 = 10.0)

(8.7

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 U E0.0 = A[AR1,P#0.0]

//4.1 + 8 bits = 5.1 //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 U E0.0 = A[AR1,P#0.0]

126

//4.1 + 5.0 = 9.1 //Se activa la salida A9.1

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

0.0

Tipo

Valor inicial

Comentario

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

0.0

Matriz[1]

INT

0

0

2.0

Matriz[2]

INT

0

0

4.0

Matriz[3]

INT

0

0

Comentario

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

*2.0

temp

Datos

ARRAY [1..3] INT

FC1: Dirección

Declaración

Nombre

Tipo

0.0

in

Datos_temp

ARRAY[1..3]

*2.0

in

Valor inicial

Comentario

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 UNIDAD DIDÁCTICA

7

Autómatas programables avanzado 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 elementos o procesos particulares de la planta, realizando funciones que van desde la lectura directa de termopares hasta la presentación de sipnósticos y control SCADA, pasando por la regulación, posicionamiento de ejes, etc.

A diferencia de las entradas/salidas inteligentes, que limitan a unos pocos los parámetros necesarios para su funcionamiento (funciones muy especializadas), los procesadores periféricos, de uso más general, necesitan más información para definir, no sólo la 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 ■■ Condiciones de control, que definen la respuesta según la miniautómatas. 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 principal, se denomina programa de la interfaz. bien diferenciados: Se debe destacar, sin embargo, cómo, en modo ■■ Entradas/salidas especiales. 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: Salida de CPR _ IN = PV _ PER ⋅

100 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: LMN _ PER = LMN ⋅

27648 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”: Parámetro

Tipo de datos

COM_RST

BOOL

Valores posibles

Por Descripción defecto 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 “Conectar 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 entrada “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 “Conectar 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

PV_IN

144

REAL

REAL

-100.0...100.0 (%) ó 0.0 magnitud física 1)

INTERNAL SETPOINT / Consigna interna.

-100.0...100.0 (%) ó 0.0 magnitud física 1)

PROCESS VARIABLE IN / Entrada de valor real

La entrada “Consigna interna” sirve para ajustar un valor de consigna.

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.

7: Regulación PID

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

Tipo de datos

PV_PER

WORD

Valores posibles Por defecto Descripción 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

GAIN

REAL

-100.0...100.0 (%) ó magnitud física 2)

REAL

0.0

MANUAL VALUE / Valor manual La entrada “Valor manual” sirve para establecer un valor manual mediante función de manejo/visualización (interface hombre máquina).

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

LMN_HLM

PV_FAC

REAL

REAL

REAL

-100.0...100.0 (%) ó magnitud física 1)

0.0

LMN_LLM …100.0 (%) ó magnitud física 2)

100.0

DEAD BAND WIDTH / Ancho de zona muerta. 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. MANIPULATED VALUE HIGH LIMIT / Límite superior del valor manipulado. 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.

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 manipulado. 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). Parámetro

Tipo de datos

LMN_OFF

REAL

Valores posiPor defecto bles 0.0

Descripción

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

DISV

REAL

REAL

-100.0...100. 0 0.0 (%) ó magnitud física 2)

INITIALIZATION VALUE OF THE INTEGRAL ACTION / Valor de inicialización de la acción I.

-100.0...100. 0 0.0 (%) ó magnitud física 2)

DISTURBANCE VARIABLE / Magnitud perturbadora.

La salida del integrador puede forzarse con la entrada I_ITL_ON. En la entrada “Valor de inicialización de la acción I” está el valor de la inicialización.

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”. Parámetro

Tipo de datos

LMN

REAL

Valores posibles

Por defecto

Descripción

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). Parámetro

Tipo de datos

LMN_I

REAL

Valores posibles

Por defecto

Descripción

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: Salida de CPR _ IN = PV _ PER ⋅

100 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”. Parámetro

Tipo de datos

COM_RST

BOOL

Valores posibles Por defecto FALSE

Descripción 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 manipulado.

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

150

REAL

-100.0…100.0 (%) o magnitud física 1)

0.0

INTERNAL SETPOINT / Consigna interna. La entrada “Consigna interna” sirve para fijar un valor de consigna.

7: Regulación PID

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

Tipo de datos

PV_IN

REAL

PV_PER

Valores posibles Por defecto

Descripción

-100.0…100.0 (%) o magnitud física 1)

PROCESS VARIABLE IN / Entrada de valor real.

WORD

0.0

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. 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 comportamiento temporal del integrador.

DEADB_W

REAL

-100.0…100.0 (%) o magnitud física 1)

1.0

DEAD BAND WIDTH / Ancho de zona muerta. 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

T#3s

MINIMUM PULSE TIME / Duración mínima de impulso.

>=CYCLE

En el parámetro “Duración mínima de impulso” puede parametrizarse 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 (%) o magnitud física 1)

0.0

DISTURBANCE VARIABLE / Magnitud perturbadora. 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”. Parámetro

Tipo de datos

QLMNUP

BOOL

Valores posibles Por defecto FALSE

Descripción 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 Impulso

Calentar

OFF

Enfriar

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: Duración de impulso =

INV  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. Duración de impulso negativo =

Duración de impulso positivo =

INV  PER _ TM 100

INV  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. Duración de impulso negativo =

Duración de impulso positivo =

INV  PER _ TM 100

INV PER _ TM  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 Impulso

ON

OFF

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.

Regulación de tres puntos

158

POS_P_ON

NEG_P_ON

QPOS_P

QNEG_P

FALSE TRUE FALSE TRUE

FALSE FALSE TRUE TRUE

FALSE TRUE FALSE FALSE

FALSE FALSE TRUE FALSE

7: Regulación PID

Regulación de dos puntos

FALSE

cualquiera

FALSE

TRUE

cualquiera

TRUE

TRUE FALSE

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”. Parámetro Tipo de datos Valores posibles INV

Por Descripción defecto INPUT VARIABLE / Variable de entrada.

REAL

-100.0…100.0 (%)

0.0

TIME

>=20*CYCLE

T#1s

TIME

>=CYCLE

T#0ms

REAL

0.1 … 10.0

1.0

PER_TM

P_B_TM

RATIOFAC

STEP3_ON BOOL

TRUE

BOOL

FALSE

BOOL

FALSE

BOOL

FALSE

BOOL

FALSE

ST2BI_ON

MAN_ON POS_P_ON

NEG_P_ON

En el parámetro de entrada “Variable de entrada” se aplica una magnitud de valor manipulado analógica. PERIOD TIME / Periodo. En el parámetro “Periodo” se introduce la duración de periodo constante de 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 de pausa. 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. Este parámetro permite modificar la relación de la duración de impulsos negativos 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. 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 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 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. 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. En modo manual de una regulación de tres puntos, el parámetro de entrada “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. En modo manual de una regulación de tres puntos, el parámetro de entrada “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

Parámetro

Tipo de datos

SYN_ON

BOOL

Valores posibles

Por defecto

Descripción

TRUE

SYNCHRONISATION ON/ Conectar sincronización. Activando el parámetro de entrada “Conectar sincronización”, es posible sincronizar automá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á activada 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 muestreo” indica el tiempo entre las llamadas de bloque.

Parámetros de salida (OUTPUT) FB 43 ”PULSEGEN”. Parámetro

Tipo de datos

QPOS_P

BOOL

Valores posibles

Por defecto

Descripción

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 regulació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 regulació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.

162

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

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 UNIDAD DIDÁCTICA

8

Autómatas programables avanzado

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. A este nivel se suelen encontrar los autómatas de gama Esto da lugar a una estructura de las redes industriales alta y los ordenadores de uso específico a las tareas de en las que se pueden distinguir claramente tres niveles: 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 gestión y se encarga de integrar los niveles anteriores a automatismos (autómatas compactos, multiplexores de una estructura de fábrica o incluso de múltiples factorías E/S, controladores PID, equipos de medida, etc.) en las con emplazamientos dispersos. Las máquinas que forman llamadas “islas”, que controlan distintas parcelas de un parte de este nivel suelen ser miniordenadores o redes proceso. Generalmente, en el nivel más alto de estas redes de ordenadores compartiendo recursos e incorporando se suelen encontrar uno o varios autómatas modulares de bases de datos que permiten centralizar los servicios de gama alta, que pueden actuar como maestro de red o en compras, control de stocks, ventas, control de costos, estructuras de maestro flotante. El conjunto constituye lo etc. que se suele llamar una “célula de fabricación”.

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 interrogació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 autó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, interconectadas.

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 transmisión

167 Kbits/seg

9,6 Kbits/sg ÷12

10 Mb/seg ÷ 100Mb/seg

Nº de equipos

1 Maestro

127 estaciones

31 Esclavos

(32 activas)

Cable 2 hilos

2 hilos apatallado, o Fibra óptica de vidrio o plástico (Cable morado)

Cable coaxial o par trenzado industrial (ITP) o fibra óptica de vidrio (Cable verde)

10 km apróx. (medio eléctrico) 100 km (fibra óptica)

Depende de muchos factores

Medio físico

Mb/seg

(Cable amarillo) Extensión de la red

100m (300 m con repetidores)

Método de acceso al bus (Protocolo)

176

Maestro/Esclavo

1024 estaciones

Profibus DP: Maestro/Esclavo CSMA/CD FDL: Paso de testigo

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 = A4.0

//Consulta una de las entradas de la ET //y asigna a la salida de mi maestro

U =

//Consulta una entrada de mi maestro //y asigna a una salida de la ET

E0.0 A0.0

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

//Dirección inicial de las salidas de la ET (en la PAE o

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 o PAW)

//Dirección inicial de las entradas de la ET (en la PAA

RECORD:=P#DB1.DBX0.0 BYTE 8 enviar a la ET

//De donde coges los datos para

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 indica en el parámetro STATUS.

error se

■■ 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 3152DP, 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 de la CP.

puerto

■■ 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 seguro, es aconsejable hacerlo a través del cable MPI.

demasiado

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 enlace

Estático

dinámico (sólo

dinámico

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 existe enlace, se crea.

REQ=1. Si no

■■ 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 S7400. 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 UNIDAD DIDÁCTICA

9

Autómatas programables avanzado 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 salida-entrada es una ecuación diferencial lineal. Sin embargo, la mayor parte de los sistemas reales presentan algún tipo de no linealidad, incluso dentro de su campo de trabajo. A pesar de ello, si restringimos su estudio a un determinado rango de valores de entrada-salida o dividimos su campo de trabajo en tramos, casi todos ellos pueden aproximarse mediante ecuaciones lineales. Esto permite estudiar los sistemas no lineales 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

Otro aspecto a considerar es que muchos de los sistemas de control actuales son de tipo digital y utilizan métodos numéricos para el tratamiento de las magnitudes analógicas. En tal caso, las magnitudes del proceso se capturan por muestreo, las variables numéricas que las representan lo hacen con una resolución limitada y las relaciones salida-entrada quedan expresadas por ecuaciones diferenciales. Todo ello afecta al diseño del sistema, pero carece de importancia desde el punto de vista de su aplicación.

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

Evento de arranque

Prioridad preajustada Aclaración

OB 1 OB 10

Final del arranque o final del OB 1 Alarma horaria 0

1 2

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

Alarma horaria 7 Alarma de retardo 0

2 3

OB 21

Alarma de retardo 1

4

Alarma de retardo 2

5

Alarma de retardo 3

6

Alarma cíclica 0 (valor prefijado: impulso de reloj de 5 s)

7

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

Alarma cíclica 0 (valor prefijado: impulso de reloj de 10 ms) Alarma de proceso 0

15 16

OB 41

Alarma de proceso 1

17

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 OB 55 OB 56 OB 57

Alarma de proceso 7 Alarma de estado Alarma de actualización Alarma del fabricante

23 2

OB 22 OB 23 OB 30

240

2 2

Ciclo libre Sin valores por defecto

Sin valores por defecto

Alarmas cíclicas

Alarmas de proceso

Alarmas DPV1

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

OB

Evento de arranque

Prioridad preajustada Aclaración

Llamada de la SFC 35 “MP_ALM”

25

Alarma de multiprocesamiento

Alarma de sincronismo 1 Alarma de sincronismo 2 Alarma de sincronismo 3 Alarma de sincronismo 4

25 25 25 25

Alarmas sincronismo

Alarma de sincronismo tecnológica

25

Alarmas de sincronismo tecnológicas

OB 70 OB 72 OB 73

Error de redundancia de la periferia (solo en CPU’s H) Error de redundancia de la CPU (solo en CPU’s H) OB de error de redundancia de la comunicación

25 28 25

Alarmas de error de redundancia

OB 80

Error de tiempo

26, 281

Error de la fuente de alimentación

26, 281) en el S7-300 y CPU 318

OB 60 OB 61 OB 62 OB 63 OB 64 OB 65

OB 81 OB 82

OB 83

OB 84

OB 85

OB 86

OB 87

OB 88 OB 90 OB 100 OB 101 OB 102

26, 281) en el S7-300 Alarma de diagnóstico 25, 281) en el S7-400 y CPU 318 6, 281) en el S7-300 Alarma de inserción / extracción 25, 281) en el S7-400 y CPU 318 26, 281) en el S7-300 Error de hardware CPU 25,281) en el S7-400 y CPU 318 26, 281) en el S7-300 Error de ejecución del programa 25, 281) en el S7-400 y CPU 318 26, 281) en el S7-300 Fallo de un aparato de ampliación, de un sistema maestro DP o de un 25, 281) en el S7-400 y equipo en la preoferta descentralizada CPU 318 26, 281) en el S7-300 Error de comunicación 25, 281) en el S7-400 y CPU 318 Ejecución interrumpida

28

Rearranque completo o borrado de un bloque en curso de tratamiento 292) en el OB 90 o carga de un OB 90 en la CPU o fin del OB 90 Rearranque completo (arranque en caliente) 271)

Ciclo de tarea no prioritaria

Rearranque

Alarmas sincronismo

Arranque en frío

OB 121

Error de programación

OB 122

Error de acceso a la periferia

271) 271)

Prioridad del OB causante del error Alarmas de sincronismo Prioridad del OB causan- tecnológicas 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 del sistema de la CPU, se ha adelantado la hora y con ello se ha saltado el evento de arranque, la fecha o la hora para un OB de alarma horaria.

El sistema operativo llama al OB 80 y codifica el número del OB de alarma horaria y las informaciones sobre el evento de arranque en el OB 80.

Al sincronizar o corregir el reloj del sistema de la CPU se ha retrasado la hora repitiéndose el evento de arranque, la fecha o la hora para un OB de alarma horaria.

CPU’s S7-400 y una CPU 318:

244

Después, el sistema operativo ejecutará una vez el OB de alarma horaria, independientemente del número de veces que en teoría debía ejecutarse. 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

Si antes de retrasar el reloj, se activó el OB de alarma horaria, éste no se volverá a llamar a las horas que ya han pasado. CPU’s S7-300; el OB de alarma horaria se ejecuta.

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 correspondiente 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 OB de alarma horaria cuando aparece ya el evento de arranque para el próximo intervalo.

El sistema operativo llama al OB 80. Si el OB no se ha programado, la CPU pasa entonces al estado operativo STOP. En caso contrario, tras la ejecución del OB 80 y del OB de alarma horaria, 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

246

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

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 identificadores: B#16#11: Alarma activada

OB20_STRT_INF

BYTE

TEMP

B#16#21: Solicitud de arranque para OB 20 B#16#22: Solicitud de arranque para OB 21 B#16#23: Solicitud de arranque para OB 22 B#16#24: Solicitud de arranque para OB 23

248

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 parametrizado en ms

OB20_DATE_TIME

DATE_AND_TIME

TEMP

Fecha y hora a las que se solicitó el OB

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. OB de alarma cíclica

Valor prefijado para la base de tiempo

Valor prefijado para la 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 especial (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 prefijados: 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

250

DATE_AND_TIME

Fecha y hora a las que se solicitó el OB

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 correspondiente 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 relevante 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.

254

OB81_OB_NUMBER

BYTE

Número de OB (81)

OB81_RESERVED_1

BYTE

Reservado

OB81_RESERVED_2

BYTE

Reservado

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

DATE_AND_TIME

Fecha y hora a las que se solicitó 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.

256

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/desmontada 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.

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 arranque

0000 xxxx

Nº de bastidor 0 (solo en las CPU H).

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 recién ejecutado

0000 0001

Rearranque complete (arranque en caliente) con 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

260

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

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

15-12 Viabilidad de los modos de arranque automáticos

11-8

Viabilidad de modos de arranque manuales

0000

Arranque automático no aceptable, borrado total solicitado.

0001

Arranque automático no aceptable, hay que cambiar parámetros.

0111

Rearranque completo (arranque en caliente) aceptable.

1111

Rearranque completo (arranque en caliente) y rearranque aceptables (sólo S7-400).

0000

Arranque no aceptable, borrado total solicitado.

0001

Arranque no aceptable; hay que cambiar 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 válida o ajuste del 0000 0001 modo de arranque automático con CONEXIÓN 0000 0011 0000 0100 0000 0101

0000 0111 0000 1000 0000 1010

0000 1011 0000 1100 0001 0000 0001 0001 0001 0011

0001 0100

0010 0000

0010 0001 0010 0011

0010 0100

1010 0000

262

Ningún modo de arranque. Rearranque completo (arranque en caliente) con modo multiprocesador sin actuación en la CPU, según la parametrización (salo S7-400). Rearranque completo (arranque en caliente) con el selector de modos operativos. Arranque completo (arranque en caliente) por actuación en MPI. Rearranque en el modo multiprocesador sin actuar en la CPU, según parametrización (sólo S7-400). Arranque en frío con el selector de modos operativos. Arranque en frío por actuación en MPI Rearranque con multiprocesador sin actuación en la CPU conforme a la parametrización (sólo S7-400). Rearranque a través del selector de modos de operación (sólo S7-400). Rearranque por actuación en MPI (sólo S7-400). Rearranque completo (arranque en caliente) tras CONEXIÓN respaldada. Arranque en frío tras CONEXIÓN respaldada, conforme a la parametrización. Rearranque completo (arranque en caliente) con el selector de modos; última CONEXIÓN respaldada. Rearranque completo (arranque en caliente) por actuación en MPI: última CONEXIÓN respaldada. Rearranque completo (arranque en caliente) tras CONEXIÓN no respaldada (con borrado total por parte del sistema). Arranque en frío tras CONEXIÓN respaldada (con borrado total por parte del sistema). Rearranque completo (arranque en caliente) con el selector de modos; última CONEXIÓN no respaldada. Rearranque completo (arranque en caliente) por actuación en MPI; última CONEXIÓN no respaldada. Rearranque automático tras CONEXIÓN no respaldada, según la parametrización (sólo S7-400).

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

RET_VAL

CDT

264

OUTPUT

INT

E,A,M,D,L

OUTPUT

DT

D,L.

Descripción Si durante el proceso de la función ocurre un error, el valor de retorno contiene un código de error. En la salida CDT se emiten la fecha y la hora actuales.

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 IMPUT

MODE

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, A, M, D, const st

Identificación de horario de verano/ 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

266

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.

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

32.767

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

Parámetro

Declaración

Tipo de datos

Descripción

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.

268

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.

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

270

Código de error (W#16#...)

Explicación

0000

No hay error.

8080

Número del contador de horas de funcionamiento es erróneo.

8081

Al parámetro PV se ha asignado un número negativo.

8xyy

Información general sobre errores, consulte evaluación de errores con el parámetro RET_VAL.

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. Parámetro

Declaración

Tipos de datos

Área de memoria

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 arrancar o parar. Valores posibles: 0 hasta 7.

S

INPUT

BOOL

E, A, M, D, L Const

La entrada S arranca o para el contador 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.

Descripción

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 evaluació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”. 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 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

272

Código de error (W#16#...)

Explicación

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.

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 de la SFC 28: SET_TINT)

Se anula automáticamente la alarma horaria vigente.

Se anula la alarma horaria (llamada de la SFC 28, Se borran la fecha y la hora de arranque. Por consiCANT_TINT) guiente, la alarma horaria se debe ajustar nuevamente antes de activarla El OB de alarma horaria no existe en el momento de efectuar la llamada

Se operan automáticamente un error de prioridad; es decir, el sistema iparativo se llama el OB 85. Si el OB 85 no existe, la CPU pasa al estado operativo STOP.

Se sincronizan el reloj o se adelanta la hora Si se salta la decha y la hora de arranque al adelantar 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, independientemente 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 aunque 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, semanal, mensual, anual)

Si la fecha y la hora de arranque han transcurrido 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. Parámetro

Declaración

Tipo de Área de datos memoria

OB_NR

INPUT

INT

E,A,M,D,L Const

Número del OB que se activa en el instante SDT (fecha y hora de arranque) + múltiplo del periodo PERIOD (OB10 a OB17).

SDT

INPUT

DT

D,L.

Fecha y hora de arranque:

Descripción

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 Const

Periocidad desde el instante SDT: 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

278

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 evaluación de errores con el parámetro de salida RET_VAL.

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 evaluació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 memoria

Descripción

INT

E,A,M,D,L, Const

Número del OB que se desea activar (habilitar) (OB10 a OB17).

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.

Parámetro

Declaración Tipo de datos

OB_NR

INPUT

RET_VAL

OUTPUT

Informaciones de error

280

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.

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 evaluació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:

282



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.

9: Bloques de Organización y “SFC’s” de Control y Gestió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

SFC 40

EN_IRT

SFC 41

DIS_AIRT

SFC 42

EN_AIRT

SFC 43

RE_TRIGR

Bloquear el tratamiento de nuevos eventos de alarma y de error asíncrono. Habilitar el tratamiento de eventos de alarma y de error asíncrono de mayor prioridad. Retardar el tratamiento de eventos de mayor prioridad de alarma y de error asíncrono. Habilitar el tratamiento de eventos de alarma y de error asíncrono de mayor prioridad. 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

SFC 62

CONTROL

SFC 63

AB_CALL

Recepción programada de un paquete GD recibido. Consultar el estado del enlace asociado a la instancia de SFBx de comunicación. 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

284



Abreviatura Función

SFC 69

X_ABORT

SFC 70

GEO_LOG

Interrumpir un enlace existente con un interlocutor fuera del equipo S7 propio. 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

SFC 74

I_ABORT

SFC 78

OB_RT

Escribir datos en un interlocutor dentro del equipo S7 propio. Interrumpir un enlace existente con un interlocutor dentro del equipo S7 propio. 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 112

PN_IN

Actualizar entradas de la interfaz de programa de usuario de los componentes PROFInet.

SFC 113

PN_OUT

Actualizar salidas de la interfaz de programa de usuario de los componentes PROFInet.

9: Bloques de Organización y “SFC’s” de Control y Gestió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

Regulación discontinua.

286

1)

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



Abreviatura

Función

SFB 43

PULSEGEN1)

Formación de impulsos.

SFB 44

ANALOG

Posicionar con salida analógica.

SFB 46

DIGITAL2)

Posicionar con salida digital.

SFB 47

COUNT

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 )

Recibir datos (ASCII, 3964 (R)).

SFB 62

RES_RCVB2)

Borrar búfer de recepción (ASCII, 3964 (R)).

SFB 63

SEND_RK )

Enviar datos (RK 512).

SFB 64

FETCH_RK2)

Recibir datos (RK 512).

SFB 65

SERVE_RK )

Recibir y preparar datos (RK 512).

SFB 75

SALRM

Enviar alarma al maestro DP.

SFB 81

RD_DPAR

Leer parámetros predefinidos.

2)

2)

2

2

2

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

Related Documents

Teoria-automatas
March 2021 0
Automatas Finitos
February 2021 0
Automatizacion Avanzado
January 2021 0
Excel Avanzado
January 2021 1

More Documents from "Janiiiioooo"