1.1. Comunicación Ethernet TCP.
El objetivo principal de TCP es ofrecer un servicio de conexión segura y confiable entre los equipos. Tiene las siguientes características:
Protocolo de comunicación muy eficiente puesto que está vinculado estrechamente al hardware.
Adecuado para cantidad de datos media si grandes (hasta 65536 bytes para S7-1500).
Protocolo orientado a la conexión.
Se puede utilizar con mucha flexibilidad con otros sistemas que soporten únicamente TCP.
La comunicación Ethernet TCP la haremos con las instrucciones TSEND en un PLC y TRECV en el otro PLC. El protocolo TCP garantiza que la transferencia de datos será completa. Este protocolo está orientado a las conexiones entre dos PLCs esto significa que con las instrucciones TSEND y TRECV primero se establecerán las conexiones entre los dos PLCs ya partir de ese momento se realizara el envío de datos de un PLC al otro . Este envío de datos, podrán ser mediante marcas, blogs de datos y entradas salidas.
1.2 Enunciado del funcionamiento.
Mediante la comunicación Ethernet TCP, queremos conseguir el siguiente funcionamiento:
Los registros desde el DB6.DBW0 hasta el DB6.DBW8 del PLC A deben llegar a los registros desde el DB10.DBW10 hasta el DB10.DBW18 del PLC B.
1.3. Configuración de los DBs.
Crearemos el PLC A y el PLC B y en cada PLC crearemos un DB con el que haremos el intercambio de datos.
PLC A: Crearemos el DB6 con un array con el nombre "PLC_A" de 10 variables en formato de integer ya las 5 primeras variables les pondremos los valores 10,20,30,40 y 50.
PLC B: Crearemos el DB10 con un array con el nombre "PLC_B" de 10 variables en formato de integer y en principio no le ponemos ningún valor en los registros.
A los DBs debemos quitarles el "acceso optimizado al bloque", ya que las funciones GET y PUT trabajan con direcciones absolutas.
Una vez esté deshabilitado el acceso optimizado, debemos compilar el DB para que salgan las direcciones absolutas.
Escribimos los "valores de arranque" de DB6 que serán 1,2,3,4 y 5.
Repetimos el procedimiento en el DB10 del PLC B.
Para realizar la configuración de los PLCs en el proyecto, debemos proceder de la siguiente manera:
Seleccionaremos la pestaña "Vista de redes".
Arrastraremos la conexión del PLC B al PLC A para que los dos PLCs estén conectados a la misma red.
2.1. Programación y configuración de TSEND_C en PLC A.
Programaremos en el PLC En la función TSEND_C que será la encargada de crear la conexión y enviar los datos al PLC B, donde tendremos la función TRECV_C que recibirá los datos que lleguen del PLC A.
Programaremos la función TSEND_C en el FC1 y por eso buscaremos la función en el apartado de "Comunicación" y dentro de la carpeta "Open user comunication".
Arrastraremos la función sobre el segmento (1).
Se abrirá una ventana (2) donde se nos pide un nombre por el DB de soporte de la función. Podemos dejar el nombre que nos da por defecto o cómo en este caso ponerle el nombre "ENVIO DE A a B".
Clicaremos sobre el círculo rojo para que salgan las opciones de la función.
REQ: Pondremos un elemento booleano que en su flanco de subida se encargara de iniciar la transmisión de datos (FECHA) con la conexión descrita en "CONNECT".
CONT: Para establecer la conexión, debemos poner un 1 y si queremos cortar la conexión, debemos poner un 0. Si el PLC se va a STOP la conexión se corta hasta que volvamos a tener un 1 en CONT.
LEN: Indicaremos la longitud de los datos que enviamos en número de bytes.
CONECTO: Tendremos los parámetros de conexión. Se creará de forma automática.
FECHA: Aquí tendremos los datos que queremos enviar, al menos debe ser un byte y máximo 65536 bytes.
Seleccionaremos la función y con el botón derecho seleccionaremos las "Propiedades", Se abrirá la siguiente ventana donde seleccionaremos la pestaña "Configuración".
1 En "Interlocutor" seleccionaremos el PLC al que enviaremos los datos, en este caso el PLC B.
2 En "Datos de conexión" seleccionaremos "nuevo" y automáticamente se asignará un nombre a la conexión y creará un DB con los datos de conexión del PLC A.
1 En el PLC A, veremos ya el nombre asignado a la conexión y a continuación activamos el "Establecimiento activo de la conexión".
2 En el PLC B seleccionamos "nuevo" y aceptamos el nombre de la conexión que nos da. Este nombre pertenecerá a un DB que nos habrá creado en el PLC B y tendrá los parámetros de conexión del PLC B.
Cuando se vea el OK en "Parámetros de conexión" y "Parámetros del bloque" significará que la función tiene rellenada los parámetros mínimos.
2.2. Programación y configuración de TRECV_C en PLC B.
Programaremos en el PLC B la función TRECV_C que será la encargada de recibir la conexión del PLC A y los datos enviados por él.
Programaremos la función TRECV_C en el FC1 y por eso buscaremos la función en el apartado de "Comunicación" y dentro de la carpeta "Open user comunication".
Arrastraremos la función sobre el segmento (1).
Se abrirá una ventana (2) donde se nos pide un nombre por el DB de soporte de la función. Podemos dejar el nombre que nos da por defecto o cómo en este caso ponerle el nombre "RECIBE DE A a B".
Clicaremos sobre el círculo rojo para que salgan las opciones de la función.
REQ: Pondremos un elemento booleano que en su flanco de subida se encargara de iniciar la recepción de datos (FECHA) con la conexión descrita en "CONNECT".
CONT: Para establecer la conexión, debemos poner un 1 y si queremos cortar la conexión, debemos poner un 0. Si el PLC se va a STOP la conexión se corta hasta que volvamos a tener un 1 en CONT.
LEN: Indicaremos la longitud de los datos que enviamos en número de bytes.
CONNECT: Tendremos los parámetros de conexión. Se creará de forma automática.
DATA: Aquí tendremos las variables donde queremos recibir los datos que envía el PLC A.
Seleccionaremos la función y con el botón derecho seleccionaremos las "Propiedades", Se abrirá la siguiente ventana donde seleccionaremos la pestaña "Configuración".
En "Interlocutor" seleccionaremos el PLC del que recibiremos los datos, en este caso el PLC A.
1 En "Datos de conexión" del PLC B, seleccionaremos el DB que se nos había creado en el PLC B al configurar el T_SEND_C en el PLC A.
2 En "Datos de conexión" del PLC A seleccionaremos la conexión creada anteriormente en el PLC A.
2.3 Habilitación de GET-PUT.
En la comunicación Ethernet TCP con un PLC real o PLCSim no nos haría falta habilitar el acceso GET y PUT, pero en este caso lo habilitamos para que pueda comunicarse con el simulador 2D. Para ello, vamos a las propiedades del PLC y buscaremos el apartado "Protección&Seguridad" y habilitaremos la casilla "Permitir acceso vía comunicación PUT/GET del interlocutor remoto".
2.4. OB30, Comunicación, con el simulador 2D.
En cada PLC, en el OB30 tenemos una instrucción MOVE que nos servirá para indicar al simulador 2D con el que DB de datos trabajaremos en este PLC para hacer la comunicación ETHERNET TCP. En este ejemplo, estamos diciendo que vamos a trabajar con DB6.
En este ejercicio, en el PLC A trabaja con el DB6 y el PLC B con el DB10. Si queremos trabajar con otro DB, ponemos el número del DB en IN del MOVE.
Por otra parte, el simulador 2D no lee DBs y si Marcas, por tanto en el segmento dos movemos los valores del DB utilizado en las marcas que serán leídas por el simulador.
3.1. Procedimiento para la comunicación entre PLCSimAdvanced – Simulador 2D.
Para poder trabajar con este simulador debemos abrir el PLCSin Advanced. A continuación se relaciona el procedimiento a seguir para poder conseguir con éxito la comunicación entre PLCSimAdvanced y el Simulador 2D para poder comprobar el funcionamiento del programa.
1 Poner en el buscador "Plcsim advanced".
2 Seleccionamos el programa.
3 Ejecutamos como administrador.
Cambiaremos la IP del adaptador del PLCSim Virtual y le pondremos una IP fija del mismo rango que nuestros PLCs. Para ello pulsamos sobre "Cambiar opciones del adaptador".
Seleccionamos el adaptador "Siemens PLCSIM Virtual Ethernet" y lo abrimos.
Abrimos el protocolo TCP/IP v4 y en nuestro caso pondremos como IP 192.168.0.100.
Hemos de abrir en el PLCsim Advance los tres PLCs, en este caso para el primero haremos lo siguiente:
1 Seleccionamos "PLCSim Virtual Ethernet Adapter".
2 Seleccionamos "Ethernet".
3 Ponemos el nombre que le hemos puesto al PLC en nuestro proyecto, la IP y la mascara de subred.
4 Pulsamos encima de "Start".
5 Aparece el PLC con el nombre y la dirección configurada.
Repetimos el procedimiento con el PLC_B y por lo tanto haremos lo siguiente:
1 Ponemos el nombre que le hemos puesto al PLC en nuestro proyecte, la IP y la mascara de subred.
2 Pulsamos encima de "Start".
3 Aparece el PLC con el nombre y dirección configurada.
Repetimos el procedimiento con el PLC_C y por lo tanto haremos lo siguiente:
1 Ponemos el nombre que le hemos puesto al PLC en nuestro proyecte, la IP y la mascara de subred.
2 Pulsamos encima de "Start".
3 Aparece el PLC con el nombre y dirección configurada.
Una vez que tengamos ya configurados los tres PLCs en el PLCSim Advanced, enviaremos la configuración y programa a cada PLC y procederemos de la siguiente manera:
1 Marcamos con el ratón el PLC que queremos cargar.
2 Pulsamos el botón "Enviar a dispositivo".
3 Seleccionamos en "Tipo de interface PG/PC" = "PN/IE".
"Interfaz PG/PC" = "Siemens PLCSIM Virtual Internet Adapter".
"Conexión con interface /subred" ="PNIE_1"
4 Seleccionar "Mostrar dispositivos compatibles". Tambien podriamos poner "Mostrar dispoitivos identicos".
5 Pulsamos en "Iniciar busqueda".
6 Seleccionamos el PLC donde queremos cargar nuestro proyecto.
7 Pulsamos "Cargar".
Cuando se haya cargado el PLC, lo marcamos (1) y lo ponemos en RUN (2).
Repetimos el procedimiento de carga con el PLC_B y PLC_C.
3.2 Comprobación del funcionamiento:
Una vez que estén cargados los dos PLCs y en estado RUN, abriremos el simulador 2D.
Podremos observar que los 5 valores del DB6 del PLC A han sido enviados al DB10 del PLC1B.
Para probar más valores, podemos abrir una tabla de observación en el PLC A y poner las variables del DB6 y a continuación procedemos de la siguiente manera:
1 Ponemos los valores nuevos que nos interesen.
2 Forzamos los valores en los registros de DB6.
A continuación miramos en el PLC B y podremos ver que los valores recibidos del PLC A han cambiado.
Antes de poder realizar el programa es necesario hacer una relación de las diferentes variables que intervienen en el proceso, de forma que mediante una Tabla de variables en TIA Portal queden reflejadas, y en el momento de realizar el programa poder identificarlas correctamente.
4.1. Relación de variables de entradas.
A continuación se relacionan las variables de entrada al PLC que son:
o Pulsadors de control.
o Selector.
o Potenciómetro.
4.2. Relación de variables de salidas.
A continuación se relacionan las variables de salida al PLC que son:
o Pilotos de señalización.
El proyecto de TIA Portal se ha estructurado en diferentes bloques de programa como son:
o OB30 Cyclic interrupt: Este bloque de programa és el que realiza la comunicación entre el PLCSim y el Simulador 2D del proceso.
o OB1 Main: Este bloque contiene la organización de llamadas al resto de bloques que forman el programa del proceso.
o FC1 Ethernet TCP: Este bloque contiene el programa que da respuesta al funcionamiento del enunciado.
Por lo tanto, el proyecto en TIA Portal tendrá la siguiente estructura:
PLC A OB30_Cyclic interrupt
PLC A OB1_Main
PLC A FC1 ETHERNET TCP
PLC A DB6
PLC B OB30_Cyclic interrupt
PLC B OB1_Main
PLC B FC1 ETHERNET TCP
PLC B DB10
Contenidos de este espacio de Ramón L. Yuste y Vicenç Guerrero se publica bajo licencia:
Creative Commons Reconocimiento-No comercial-Sin obras derivadas 3.0 España