7 de marzo de 2011

Reutilizando un PLC Simatic S5-95U como cabecera Profibus (parte 1ª)

Ya que la anterior entrada he retomado el contacto con mi PLC S5-95U, voy a recuperar una vieja idea: reutilizarlo como cabecera Profibus. La idea es aprovechar su gran conectividad (entradas y salidas digitales, contadores rápidos y señales analógicas) desde un PLC más moderno, por ejemplo desde un PLC 315-2DP.

Lo que voy a hacer en esta primera parte es configurar el S5-95U para acceder a toda su periferia integrada, parametrizarlo como esclavo Profibus y hacer una sencilla programación para transmitir y recibir datos. En una segunda parte haré la integración del S5-95U en una red Profibus y el tratamiento de los datos en un S7-300.

NOTA: Aquí hice una introducción a Step5 que quedó incompleta. Esta entrada podría considerarse su continuación.

Para realizar esta entrada me he basado en este documento de Siemens: Conectar un S5-95U-DP Esclavo a un maestro CPU315-2DP.

El primer pasó será configurar el S5-95U para tener acceso a todas las posibilidades que ofrece su periferia integrada (no dispongo de periferia externa). Para ello debemos configurar su DB1, que es un bloque de datos especial que nos permite parametrizar las funciones del PLC.

Para editarlo lo recomendable es realizar un borrado total del PLC para tener un DB1 funcional ajustado con valores por defecto, y a partir de ahí adaptarlo a nuestras necesidades.

Para decirle que vamos a usar las 8 entradas analógicas modificamos en el identificador de bloque OBA su número a 8: AI 8.

El bloque OBI sirve para parametrizar las entradas de alarma, pero no me interesa, ya que las voy a utilizar como entradas digitales ordinarias, así que no es necesario modificar nada aquí.

En el bloque OBC configuraremos las entradas de contador rápido. CAP 999 para el contador A con incremento por flanco positivo y valor de preselección (valor máximo del contador) 999 - este valor se puede modificar posteriormente. De forma idéntica el contador B CBP 999.

Como no voy a usar temporizadores, en el bloque SDP voy a poner el parámetro T a cero, para que no se evalúen y ganar algo de tiempo ciclo.

Finalmente me queda por modificar el bloque DPS que es el que configura la conexión Profibus. Para activarlo debemos sustituir los caracteres # al principio y al final del bloque por espacios. El primer valor es TLN y le asigno la dirección Profibus del esclavo, en mi caso la 7. El segundo valor DPAE es un par de números que son la codificación en decimal del byte de configuración, y sirven para especificar qué cantidad de datos se van a transmitir. Para construir estos números tenemos que ir a la documentación de Siemens y leemos:

Estructura del byte de configuración:
Bit 7 Bit 6 Bit 5 y Bit 4 Bit 3, 2, 1 y 0
128 64 32 16  8 4 2 1
Consistencia Formato Long Datos de envío o recepción Longitud de datos 
0: Byte o Word
1: Longitud completa 
0: Estructura en byte
1: Estructura en Word
00: prohibido
01: Datos de envío al maestro
10: Datos de recepción del maestro
11: Datos de envío y recepción 
0000: 1 Byte o Word
0001: 2 Byte o Word
0001: 2 Byte o Word
0010: 3 Byte o Word
0011: 4 Byte o Word
0100: 8 Byte o Word
1111: 16 Byte o Word 
Ejemplo:
16 WORD de entrada digitales con consistencia como datos de envío al maestro 11011111 = 223 decimal
16 WORD de salidas digitales con consistencia como datos de recepción desde el maestro 11101111 = 239 decimal

Precisamente el valor que pone de ejemplo es el máximo de datos a transmitir o recibir, y son los valores que voy a usar. Es importante anotar estos valores, ya que nos harán falta cuando hagamos la configuración de la red Profibus en Step7.

Con todo lo visto hasta ahora, el DB1 debería presentar el siguiente aspecto:

Para que los parámetros del DB1 hagan efecto debemos pasar el PLC de Stop a Run. Si el PLC se queda en Stop es que hemos cometido algún error; debemos ser estrictos al escribir el DB, sobre todo respetando los espacios. En el manual se especifica un procedimiento para detectar donde nos hemos equivocado mediante diagnosis en el PLC, pero me ha parecido un poco farragoso. Con un poco de cuidado no deberíamos tener problemas.

Con el PLC configurado nos queda hacer un sencillo programa para transmitir el estado de las entradas y activar las salidas de la periferia integrada. Para ello he creado el FB1 con el siguiente código,

Activo las salidas digitales y la salida analógica según me llegan por Profibus:
NAME: FB1

L PW 128
T AW 32

L PW 130
T AW 40
Voy a usar dos bits para poner a cero las entradas de contador y a la vez modificar el valor de preselección. Si recibo la orden de poner a cero se copia el valor de preselección (que también se recibe por Profibus) sobre el valor del contador.
L PY 132
T MB 0
UN M 0.0
SPB =M000
L PW 134
T PW 36

M000: UN M 0.1
SPB =M001
L PW 136
T PW 38
A continuación se transmiten de forma correlativa en formato WORD las entradas digitales, las entradas de alarma, el byte de diagnosis, los contadores rápidos y las entradas analógicas.
M001: L EW 32
T PW 128

L EW 34
T PW 130

L EW 36
T PW 132

L EW 38
T PW 134

L EW 40
T PW 136

L EW 42
T PW 138

L EW 44
T PW 140

L EW 46
T PW 142

L EW 48
T PW 144

L EW 50
T PW 146

L EW 52
T PW 148

L EW 54
T PW 150
Finalmente reseteamos los bits que forman el byte de diagnóstico.
R E 35.0
R E 35.1
R E 35.2
R E 35.3
R E 35.4
R E 35.5
R E 35.6
R E 35.7

BE

Llamamos en el OB1 al FB1 y listo, ya tenemos el S5-95U listo para nuestro propósito.

He transmitido por Profibus el byte de diagnosis ya que resulta interesante. El S5-95U tiene un pila de respaldo. Si esta pila se agota, en cuanto apaguemos el PLC perderemos el programa, así que no estará de más avisar que esto puede suceder al maestro Profibus. En la documentación podemos ver cómo es este byte de diagnósis:


En el S5-95U vienen preprogramados dos FB (FB250 y FB251) para procesar señales analógicas. Ya que cada llamada a uno de ellos conlleva un retardo de 2,4 ms en el tiempo ciclo, he preferido transmitir el valor leído de las señales analógicas en "crudo" y procesarlas en Step7.

Las entradas de alarma, si se configuran en el DB1, activan el OB3 (OB de alarma). Como no le he encontrado utilidad, no las he configurado y se usan como cuatro entradas digitales ordinarias.

Para las entradas de contador rápido debemos tener en cuenta que se ponen a cero con cada paso de Stop a Run. Los contadores se incrementan con cada flanco positivo que reciban; si necesitásemos flancos negativos habría que modificar el DB1. Al llegar al valor de preselección regresan a cero. Para ponerlos a cero desde programa deberemos sobre escribirlos con un valor (16 bits sin signo), que quedará configurado como nuevo valor de preselección. Existe la posibilidad, modificando el DB1, de agruparlos como un único contador de 32 bits.

En la segunda parte me meteré con la configuración en Step7.

No hay comentarios:

Publicar un comentario

Por favor, no pidas copias de programas comerciales, licencias o números de serie.