Está en la página 1de 11

Conexión por TCP entre dos S7-1200 por Profinet

Conectaremos dos PLC S7 1200 a través de la interfaz PROFINET, usando la comunicación abierta de
usuario por medio de las instrucciones TSEND_C y TRCV_C bajo el protocolo TCP, haciendo que lo
introducido por las entradas de uno (PLC_1) , salga por las salidas el otro (PLC_2).

1) Colocación PLC, fijado IPs, y activación marcas de ciclo

Como siempre, vamos al menú “Agregar


dispositivo” y elegimos los componentes a
conectar, que en este caso, serán los dos
autómatas que usaremos (S7-1200)

Debemos tener cuidado de que coincidan las


versiones de firmware, ya que en caso contrario
tendremos problemas posteriormente.

Esta operación la realizaremos dos veces (una por cada PLC).

Tras ello, tendremos en la ventana de “Dispositivos” los dos PLC (PLC_1 y


PLC_2)

Seleccionamos PLC_1 y tras desplegar el menú, pinchamos en “Configuración de dispositivos”

Obtendremos una ventana que nos muestra una figura del autómata, y donde está colocado, y otra justo
debajo, donde se nos indica las propiedades del elemento seleccionado (PLC_1 en nuestro caso)
Ahora vamos a configurar la dirección IP.

Para ello, en el menú “General” nos vamos a “Interfaz Profinet”, y “Direcciones Ethernet”.
A la derecha, nos aparece “Agregar subred” (cosa que por ahora no haremos), y la dirección IP, con su
máscara. Esta dirección (y máscara) la pondremos a nuestro gusto (lógicamente la IP deberá ser distinta
en cada PLC, o elemento de la red). Para nuestro ejemplo, para el PLC_1 pondremos 192.169.1.40.

Una vez hecho esto, en el mismo menú (General) vamos a “Generadores de impulso” y en “Marcas de
sistema y de ciclo”, activaremos “Activar la utilización del byte de marcas de ciclo”, ya que luego serán usadas
para activar las comunicaciones. A estas marcas daremos 100 como dirección de inicio.

Con el PLC_2 realizamos las mismas operaciones, aunque aquí la IP será 192.16.1.41.
Programa:

Vamos al árbol del proyecto, y dentro de PLC_1, pinchamos “Bloques de


programa” / “Main [OB1]”

Nos aparecen dos ventanas nuevas; en la de la parte superior meternos nuestro programa, mientras que
en la inferior iremos viendo datos, y parámetros sobre la programación.

Si ahora repetimos lo mismo con el PLC_2,


obtendremos dos pestañas de “Main” en la barra
inferior, que nos permitirán pasar de programar
uno u otro PLC de forma rápida.

Empezaremos programando el PLC_1, para lo que pinchamos en el “Main” primero...


Ahora añadiremos un bloque de comunicaciones que nos permitirá enviar
datos al PLC_2. Para ello, vamos a la parte derecha, y en la ventana de
“Instrucciones” dentro de la pestaña de Comunicación, seleccionamos “Open
user communication”, y hacemos doble clic en TSEND_C (bloque que
permite realizar envíos vía Ethernet- TCP).
Nota: Ojo que todos TSEND y TRCV sean de la misma versión

Con lo que obtenemos la siguiente ventana

En ella podremos dar nombre al bloque de comunicación que usaremos para enviar los datos desde PLC_1
a PLC_2. Aunque en esta ocasión no cambiaremos nada, y daremos aceptar (dejamos el nombre por
defecto). Tras lo que nos aparece un nuevo bloque en los segmentos de programa.

Si miramos en la parte inferior, aparecerán las propiedades las características de programación del bloque.
Ahora vamos a configurarlo:

En “Configuración” / “Parámetros de conexión” / ”General”, indicamos el “Interlocutor”; que será el nombre


del otro PLC (PLC_2)

Y en En “Datos de conexión” local (del PLC_1) elegimos “Nuevo”, tras lo que se activará “Establecimiento
activo de conexión”, y aparecerá una nueva casilla (puerto local). Además nos creará un bloque de datos
(PLC_1_Send_DB) donde se encontrarán los datos de la conexión para el interlocutor local.

Para el PLC_interlocutor (PLC_2 en nuestro caso) damos también a “Datos de conexión” “Nuevo” , y en este
caso se creará un bloque de datos ( PLC_2_Receiver_DB) con los datos de la conexión para el interlocutor
remoto.

Al terminar esto, debe quedar como en la imagen:


Observa que el sistema nos ha rellenado el “Establecimiento activo de la conexión” y “puerto del interlocutor”.

Pasamos ahora a rellenar los parámetros de bloque:

De todos ellos solo nos interesan los siguientes:

* Entradas / Inicio de la petición (REQ): Inicia una petición de transmisión (con el flanco ascendente de
la señal de reloj de 10Hz (%M100.0)).

* “Estado de conexión (CONT)” que pondremos 1, o true, para que se establezca y mantenga la conexión
(0 la corta).

* Puntero de conexión asociado (CONNECT), es el bloque de datos creado al definir la conexión


(PLC_1_Send_DB). Es fijado por el sistema.

* “Área de transmisión (DATA)”, le indicamos los datos que queremos enviar (puede ser un área de
memoria, o una variable.). En nuestro usaremos las 8 primeras entradas del PLC (IB0), que serán
etiquetadas automáticamente, en nuestro caso, como “Tag_1”. Como hemos especificado una variable
de tamaño y tipo conocido (de tipo Byte), no hace falta indicar “Longitud” ni “Tipo”.
Importante: Siempre se envía como mínimo un byte (8 bit).

Lo podemos indicar con el nombre de un área de memoria, o una variable.


En caso de usar áreas de memoria, en “Longitud de transmisión” pondremos la
longitud (o 0 para indicar por defecto cualquier longitud de datos de
comunicación) y el tipo. Pero este no es ahora nuestro caso.

A partir de aquí no es necesario rellenar


más datos.

Todos los parámetros siguientes son


“banderas” que nos indican como va
evolucionando el estado de la
comunicación y nos devuelven un
resultado, el cual podremos utilizar para
consultar el estado de la comunicación
y/o utilizarlos en el segmento del
programa.

Por supuesto que esta parte de la


configuración la podemos hacer de forma más rápida poniendo los valores directamente en la función
correspondiente.

Con lo que en este caso quedaría algo


como:

Ahora iremos a PLC_2 y empezaremos con el bloque de programa responsable de la recepción, el cual
colocaremos en su “Main”.

Una vez en él, vamos como antes, a la parte derecha, y en la ventana de “Instrucciones”, en la pestaña de
Comunicación, seleccionamos “Open user connunication” y hacemos doble clic en TRCV_C (que permite
recibir envíos vía Ethernet - TCP).

Y al igual que antes, nos aparece una ventana


para crear el bloque de datos de la
comunicación. Y si queremos podemos poner
otro nombre (aunque dejaremos el fijado por
defecto)
Una vez
elegido el
bloque le
pinchamos y
nos vamos a
la ventana de
propiedades,
donde nos
aparecerán
los
parámetros
de conexión y
parámetros
de bloque.

Ahora introducimos en “Interlocutor” el nombre del otro PLC (en nuestro caso PLC_1).

En datos de conexión, para “Local” introducimos el bloque de datos que se nos creo para guardar la
descripción de la conexión para el receptor (PLC_2_Receiver_DB).
Y en los del “Interlocutor”, introducimos la que se nos creo antes para la conexión del PLC que envía
( PLC_1_Send_DB).

Como antes, el sistema nos asigna el puerto automáticamente, y también pone la marca “Establecimiento
activo de la conexión”.

Pasamos ahora a los parámetros del bloque, y los configuramos de forma similar al caso del emisor (PLC_1)

* “Entradas” / “Área de recepción (EN_R)” / “Parámetro de control de habilitación de recepción”, indicamos


el reloj de 10Hz (%M100.0).
* “Estado de conexión (CONT)”, ponemos 1, o true, para que se mantenga la conexión una vez establecida.
* “Longitud de recepción (LEN)”, ponemos un 0.
* “Puntero de conexión asociado (CONNECT)”, en este caso será el bloque de datos creado al definir la
conexión (PLC_2_Receive_DB). Siendo como antes rellenado por el sistema.
* “Área de recepción de datos”, en ella indicamos donde irán los datos obtenidos dentro del PLC_2. Que
en nuestro caso, los mandaremos a QB0 (dato de tipo Byte, que engloba a las salidas Q0.0 hasta
Q0.7). Este parámetro se etiquetará automáticamente como Tag_1.

Debiendo quedar como en la imagen:


O si preferimos hacerlo en el segmento
directamente, debemos poner algo como:

Ya tenemos configurada la comunicación de 1 byte desde las entradas I0.0 a la entrada I0.7 del PLC_1
hacia las salidas Q0.0 a Q0.7 del PLC_2.

Tras todo esto, los dos “Main” deben quedar como en la imagen

Solo nos falta comunicar el PLC_1 y el PLC_2, yendo a vista de redes, y uniéndolos como en la imagen:
Nota: Si además das a “Mostrar direcciones”, puedes comprobar si hay algún problema
con las IPs.

Compilación y prueba:

Ahora compilamos los programas de cada uno de los autómatas, y los cargamos en ellos. El procedimiento
para ello, es similar a los realizado anteriormente, por lo que no daremos ninguna explicación.

Si todo ha ido bien, al accionar cualquiera de las entradas (las 8 primeras) en el PLC_1 deben activarse
esas mismas salidas en PLC_2.
Obseva que la comunicación es solo en un sentido. De querer que sea en ambos, debemos añadir otro par
de TSEND y TRCV, cosa que por ahora no haremos.

Guarda el fichero con el nombre “Tu_nombre_Conexión PN-TCP 2 S7-1200”

¿Qué es qué?
De forma resumida...
Conectaremos dos PLC S7 1200 a través de la interfaz PROFINET, usando la comunicación abierta de
usuario por medio de las instrucciones TSEND_C y TRCV_C bajo el protocolo TCP, haciendo que lo
introducido por las entradas de uno (PLC_1) , salga por las salidas el otro (PLC_2).
Conectaremos dos PLC S7 1200 a través de la interfaz PROFINET, usando la comunicación abierta de
usuario por medio de las instrucciones TSEND_C y TRCV_C bajo el protocolo TCP, haciendo que lo
introducido por las entradas de uno (PLC_1) , salga por las salidas el otro (PLC_2).

En nuestro ejemplo en TSEND_C:


Se solicita transmisión cada 0,1s (REQ=10Hz).
No se corta (CONT=1)
El descriptor de la conexión es “PLC_1_Send_DB, que es el DB que se ha creado al poner en los parámetros de conexión
lo de TSEND_C (CONNECT= PLC_1_Send_DB)
Y mandamos lo que hay en los 8 bits de las entradas i0 (DATA= iB0).

Y en TRCV_C:
Se solicita recepción cada 0,1s (REQ=10Hz).
No se corta (CONT=1).
No hay longitud máxima de recepción de datos (LEN=0)
El descriptor de la conexión es “PLC_2_Receive_DB, que es el DB que se ha creado al poner en los parámetros de
conexión lo de TRCV_C (CONNECT= PLC_2_Receive_DB)
Y lo que nos llega lo metemos en QB0 (DATA).

En ambos casos no hacemos nada con las señales de error.

También podría gustarte