8 de marzo de 2011

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

En la primera parte dejamos al S5-95U preparado para funcionar como cabecera Profibus, ahora vamos a la parte de Step7.

Preparamos un proyecto de Step7 con un PLC 315-2DP y le asignamos una red Profibus con una velocidad de 1,5 Mbit/s (la máxima que soporta el S5-95U). En el catálogo buscamos "S5-95U" y lo arrastramos sobre la red Profibus, asignándole una dirección libre, en mi caso la 7.

Seleccionamos el componente que acabamos de insertar y copiamos el Módulo universal sobre los slots 1 y 2.

En las propiedades de cada módulo universal pulsamos sobre el botón Entrada directa... y donde pone Byte identificador (decimal): introducimos el primer código decimal con el que configuramos la comunicación Profibus en el DB1 del S5-95U, en mi caso 223.

Con ese código ya interpreta qué cantidad y tipo de datos se van a comunicar, tan solo debemos decirle la dirección de entradas que ocuparán los datos recibidos, en mi caso a partir de la 256.

Realizamos el proceso análogo para las salidas en el otro módulo universal, poniendo, para mi ejemplo, el valor 239.

Y como dirección de salida pongo la 256:

Y listo, guardamos y compilamos la configuración, y la transferimos al PLC. Si todo va bien y pasamos el S5-95U de Stop a Run podremos ver que el piloto rojo BF se apaga, lo que significa que ambos PLC se entienden.

Ya tenemos la configuración lista. Ya solo nos queda hacer un programa en el 315-2DP para probar el funcionamiento. Lo que he hecho es agrupar todos los datos necesarios (entradas y salidas digitales, analógicas y contadores) en un DB, y con un FC hacer la interpretación de los datos.

NOTA: para quien tenga interés, al final de esta entrada están los enlaces a los proyectos se Step5 y Step7 con todo el código.

Leer las entradas del S5-95U es tan sencillo como copiar zonas de la entrada en periferia hacia mi DB:
L PEW 256 // ENTRADAS DIGITALES
T DB10.DBW 0

L PEW 258 // ENTRADAS DE ALARMA Y BYTE DE DIAGNOSIS
T DB10.DBW 2

L PED 260 // CONTADORES RÁPIDOS
T DB10.DBD 4

L PED 264 // ENTRADAS ANALÓGICAS
T DB10.DBD 8
L PED 268
T DB10.DBD 12
L PED 272
T DB10.DBD 16
L PED 276
T DB10.DBD 20
Leo los bits que me indican si existe desbordamiento en las entradas digitales, ejemplo para la primera entrada:
// LECTURA DE LOS BITS DE DESBORDAMIENTO
U DB10.DBX 8.0
= "COM_S5".EA_OV[0]
Y proceso el valor de la entrada analógica:
// PROCESADO DE VALORES
L "COM_S5".EA_RAW[0]
L 2#11111111111000
UW
SRW 3
T "COM_S5".EA[0]
Transfiero el estado de las salidas digitales:
L DB10.DBW 42
T PAW 256
Preparo y transfiero el valor a sacar por la salida analógica:
L "COM_S5".AA
SLW 4
L 2#111111111110000
UW
T PAW 258
Y finalmente transfiero las órdenes y valores para resetear y cambiar los valores de preselección de los contadores rápidos:
L DB10.DBW 46
T PAW 260 // ORDENES DE RESETEAR CONTADORES

L DB10.DBD 48
T PAD 262 // VALORES DE PRESELECCIÓN DE CONTADORES
Viendo el DB10 y sus comentarios debería ser sencillo saber donde leer y escribir para tener acceso a todas las entradas y salidas. Las entradas y salidas digitales son triviales. El valor de las entradas analógicas se debe leer en la tabla (array) EA, donde se deposita su lectura ya procesada, y se debe interpretar un valor de 2046 como 10 V. Para los contadores rápidos A y B hay sendas señales de reset (CONT_A_RESET y CONT_B_RESET), lo que hacen es poner los contadores a cero y asignar nuevos valores de preselección (CONT_A_PRES y CONT_B_PRES). La lectura de los contadores la tenemos en CONTADOR_A y CONTADOR_B. Finalmente, en la salida analógica (AA) deberemos escribir un valor entre 0 y 1024, significando este último valor 10 V o 20 mA.

El programa para el S5-95U lo puedes bajar aquí y para el 315-2DP aquí.

Cualquier comentario será bienvenido.

1 comentario:

  1. Buenas GR
    Como siempre muy buena entrada!
    Gracias por compartirlo
    Saludos

    ResponderEliminar

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