Simulación S7 OpenModbus/TCP
Esta práctica se la dedico a Raul, por haberme hecho participe en un proyecto donde tiene que implementar una Red Modbus TCP con un Simatic S7-300 con CP 343-1 Lean, yo para las pruebas voy a utilizar el software WinAC donde es posible implementar la red aunque con diferentes bloques. Siemens dispone de OPEN MODBUS/TCP CP para cuando se trabaja con una CP 343-1, sin embargo si trabajas con una CPU que dispone de los puertos DP/PN se utiliza el S7 OpenModbus TCP que será el que utilizare en estas pruebas, conjuntamente con el Wizard que puedes descargar de Siemens para crear el bloque de datos con los parametros
Lo primero que voy a mostrar será el PLC con su dirección IP y que función cumpliara en la red Servidor o Cliente, tambien hay que saber la direccion IP del dispositivo o dispositivos y puerto, normalmente el puerto es el 502 para Modbus TCP
Para este ejemplo antes de implementarlo voy a comunicar con la IP 192.168.1.101, esté será el simulador ModRSSim actuando como Servidor y quiero acceder a los holdings registers 40001-40010
Una vez configurada la IP y los datos del Servidor ejecutamos el Wizard para crear el bloque indicado anteriormente, en el primer paso seleccionamos el proyecto en el que estemos trabajando y el directorio de los bloques, automaticamente se detecta la IP, pasamos al siguiente paso y se detecta si hay configurado algún enlace, como no es el caso seleccionamos New y next ->
El próximo paso es seleccionar si nuestro PLC es Servidor o Cliente, en este caso es Cliente, con lo cual dejamos tal cual y pasamos a siguiente. Aqui nos asigna un ID de nuestra conexión, seleccionamos el radio button de Active y especificamos la IP del Servidor y el tipo de S7 que disponemos para la interface
Especificamos el puerto del Servidor Modbus, como se ha comentado por defecto es el 502, en caso contrario recomienda el manual asignar uno del rango 2000
La siguiente parte es donde vamos a configurar a que datos queremos acceder, tenemos la posibilidad de configurar desde 1 como mínimo hasta 8, seleccionamos el tipo de datos, la direccion de inicio y la direccion final, conjuntamente con el DB asociado a esos datos, es decir, cuando nos interese acceder al area de datos 1 configurado, en el FB102 estando este en el OB1 o OB35, que sera donde se ejecutan los datos del runtime iremos cambiado el tipo de datos a los cual queremos acceder, yo para probar solo he configurado 1 zona de datos
Para finalizar le indicamos el DB de los parametros que será abierto desde el FB102
Siguiendo el asistente seleccionamos next y nos muestra el enlace creado y finalizamos el asistente, automaticamente se genera el DB2 y se guarda en el directorio especificado al inicio del asistente.
El proyecto que voy a utilizar es el que siemens tiene disponible una vez instalada la libreria, una vez probado ya se adaptara según las necesidades. Pero siguiendo el manual se utiliza el OB100 donde se hace una primera llamada al FB102, aunque este mismo es llamado desde el OB1 o en su defecto se podria llamar desde el OB35, el FB102 necesita de su DB de instancia DB102 y este a su vez abre el DB2 y llama a los diferentes FB, ya que para una comunicación con profinet integrado se utiliza el TSEND,TRCV,TCON y TDISCON, el OB121 es necesario sino se dispone de la licencia correspondiente, pero para probarlo funciona aunque en la CPU parpadea el led de error
En el DB1 estan todos los datos disponibles para hacer las pruebas pertinentes, para probarlo solo necesitamos habilitar el bit DB1.DBX12.1 habiendo previamente parametrizado a que zona de datos queremos acceder,tipo de datos, direccion de inicio y longitud, para los holdings registers es el 3 la direccion de inicio la 0 tal y como configuramos en el Wizard y la longitud 10
Nos ponemos Online y forzamos los valores. ya podemos observar que la conexion se ha establecido, el estatus Modbus A090 indica que estamos en version Demo y se han registrado los datos en el DB10 según se ha configurado
Como servidor Modbus usamos el ModRSSim que aqui puedes descargar .Lo primero que hacemos es un ping para comprobar la red y estos son los datos que habia introducido.
3 de Marzo del 2012