Archivo de la categoría: Programación

Leer datos avanzados de un esclavo I.O Link con un PLC S7 1200

Una vez instalado un bus I.O Link con diferentes esclavos en un PLC S7 1200, podemos leer algunos de sus datos simplemente consultando en las direcciones de entrada o salida asignadas a ese modulo, ahora bien si lo que queremos es un diagnostico mucho más amplio de cada esclavo podemos leer esos datos con una librería de Siemens que nos permite leer cíclicamente esos datos de diagnóstico.

Leer datos avanzados de un esclavo I.O Link con un PLC S7 1200

Para poder acceder a los datos avanzados en un bus I.O Link podemos utilizar la librería de Siemens IO_LINK_CALL_1200, en este ejemplo el FB50001, la llamada a este bloque requiere de una serie de parámetros para acceder al módulo esclavo que deseamos:

llamada-fb_io_link_call_1200

Algunos parámetros de entrada importantes son:

 

REQ: Petición de lectura del bus, se puede poner una base de tiempo y leer los datos cíclicamente.

ID: El identificador de Hardware, es decir donde tenemos instalado en master IO-Link

CAP: Acces point de la función IO_LINK_CALL normalmente a 227

RD_WR: Lectura o escritura operación, lectura = 1

PORT: Puerto del IO-Link al que queremos acceder.

IOL_INDEX: Dirección donde queremos leer los datos de diagnóstico del esclavo, debemos consultar el manual del esclavo para saber estas direcciones.

LEN: Longitud de datos es caso de modo escritura.

RECORD_IOL_DATA: Donde leemos o escribimos los datos del bus.

 

Los datos recogidos del diagnóstico de los esclavos los podemos encontrar el RECORD_IOL_DATA, un puntero hacia un DB donde podamos consultar o escribir los datos que queramos.

Dependerá de cada esclavo donde encontrar los datos de diagnóstico que nos interesen por tanto es necesario consultar el manual de cada esclavo, en este ejemplo se leen los datos de un analizador de fases SIRIUS 3UG4815 Line Monitoring Relay for IO-Link:

 bits-diagnostico-io-link

 

 

Programa para convertir de Siemens Step 7 a Rockwell

Aprovechando el código AWL de los programas hechos en Step 7 junto a la línea en texto ASCII que lleva incorporado el Logix Designer de Rockwell se puede crear un programa para realizar una traducción directa desde Siemens Step 7 a Rockwell.

Este programa lo he realizado con .NET y aunque no está totalmente perfeccionado, puede llegar a traducir el 65% de un programa hecho en Siemens Step7, del mismo modo no sería muy complicado realizar la opción contraria, es decir de .

El programa traduce de segmento en segmento, es decir no traduce un bloque o FC completo, esto es así porque es muy importante comprobar en todo momento que lo que está traduciendo sea correcto, ya que algunas veces por pequeños fallos la traducción no es correcta al 100%

traduccion-siemens-rockwell

 

Programa para convertir de Siemens Step 7 a Rockwell

El programa es muy simple, vamos a ver un ejemplo, en primer lugar debemos de copiar el código AWL del segmento del programa de Siemens:

El segmento a copiar

red-siemens-step-7

Seleccionamos ver AWL:

red-siemens-step-7-awl

Seleccionamos todo el contenido AWL de la red y hacemos Control C, y lo pegamos con el botón Pegar Traducir Copiar, este botón realiza las 3 tareas, es decir pega el contenido del portapapeles en el programa, realiza la traducción y copia en el portapapeles la traducción a Rockwell, de esta forma solo necesitamos un clic para traducir el segmento:

programa-traduccion-siemens-rockwell

 

Aunque se puede ver en la parte inferior el segmento traducido a ASCII para Rockwell, no hace falta seleccionarlo y copiarlo, por que ya lo tenemos copiado en el portapapeles, ahora simplemente lo pegamos en el editor de Rockwell:

pegar-a-Rockwell

Y comprobamos como realiza la traducción, eso si los simbólicos ya deben estar creados en el programa:

resultado-traduccion-rockwell

 

Comunicación Modbus TCP entre Sentron 3200 y el PLC S7 1200

Vamos a realizar una conexión entre un PLC S7 1200 y un analizador de red de siemens mediante Modbus TCP.

sentron3200-panoramic

 

El S7 1200 lleva incorporado el protocolo Modbus TCP, aunque en algunas versiones de firmware no lo lleve, siempre podemos actualizar el firmware, la comunicación mediante Modbus TCP es sumamente sencilla de realizar.

Requerimientos técnicos

  1.  PLC autómata S7 1200 (cuidado con la versión de firmware)
  2. Analizador de red Sentron 3200

 

Comunicación Modbus TCP entre Sentron 3200 y el PLC S7 1200

Para establecer una comunicación entre el Sentron y el PLC S7 1200 mediante Modbus TCP, utilizaremos la función de cliente Modbus que nos proporciona el PLC 1200, dependiendo en qué modelo de PLC trabajemos podemos utilizar una función u otra, en este caso utilizamos el modelo CPU 1212C con lo que la función MB_CLIENT será un poco más compleja, ya que debemos de definir un DB con tipos de datos “Connect”.

 

Llamada a la función MB_CLIENT

llamada-mb_client

Podemos observar que la lectura de datos del Sentron es cíclica cada 1 segundo, en nuestro caso será más que suficiente.

En este ejemplo leemos del registro 40002 con una longitud de 200 words.

Los datos leídos los guardamos en el DB “READ_MODBUS”, este db es simplemente un array de enteros, evidentemente este array debe de contener al menos 200 enteros.

El parámetro CONNET es un DB donde debemos de definir los datos de conexión.

Ejemplo del db de array de enteros

array-enteros

 

Ejemplo del db CONNECT para los parámetros IP de conexión

db-connect

 

El tipo de datos utilizado es TCON_IP_v4, un tipo de datos específico para las conexiones Ethernet.

Con este Db ya podemos asignar la ip de nuestro servidor, en este caso el Sentron

db_connect-ip

Como podemos observar la IP del Sentron es la 192.168.1.81.

Debemos de definir el resto de parámetros, puerto, ID, hardware

parametros-modbus

El puerto modbus es el 502, tipo de conexión TCP/IP, el ID que utilizamos y la identificación hardware del dispositivo.

Los datos que vamos a leer del analizador de red se encuentran en la dirección 40002 que corresponde al primer registro leído, este es el listado de parámetros leídos a partir de esta dirección:

registros-sentron-1

registros-sentron-2

registros-sentron-3

registros-sentron-4